As a small project on the side I planted some seeds in test tubes.
The grass seed was planted on the 18th of April and sprouted about three days later. In the following ten days, the blade of grass grew to a length of about 10cm. Then, a second blade emerged that grew even faster. Now, the second blade is 20cm tall. The soil in the tube is interstratified with small white roots.
A seed from a fresh tomato was planted in another tube on the 24th of April. The seed germinated about a week later. A small white-violetish sprout emerged through the surface of the soil. A day later it unfolded and opened two small leaves. The leaves are closed at night and open when the daylight shines on the plant.
An apple seed was planted on the 23th of April, but has not yet sprouted.
Update (18.05.2011):
The tomato sprout has grown a considerable amout in the last week, as you can see in the photos.
And once again the quest for easily synthesizable fluorescent dyes was successful: Umbelliferone. (Notice the similarity of the molecule to Aesculine. It is just missing the glycosidically bound glucose.)This substance is a naturally occurring dye of the courmarin family, but it can also be manufactured by a simple reaction. Only two reactants are needed, Resorcinol and Malic Acid. Sulfuric Acid is added as a hygroscopic catalyst to produce Formylacetic Acid from the Malic Acid in situ.
The empirical reaction equation is as follows:
C4H6O5 + C6H6O2 ————> CO + 3 H2O + C9H6O3
Resorcinol has a molar mass of 110.10 g/mol, Malic Acid 134.09 g/mol.
This equates to a 1:0.82 weight ratio.
I used 1 gram of Malic Acid and 0.82 gram of Resorcinol and added a few drops of Sulfuric Acid. The whole mixture was heated with hot air until both educts were solved in the acid and bubbling started.
After a short while, the solution began to change color to a dark orange. Upon further heating, the color got darker until it was deep red and had the viscosity of honey.
Umbelliferon in Water
A drop of the cooled product was added to a 600ml beaker of cold water and observed under ultraviolet light. Instantly, a bright green plume descending from the surface was visible, changing color to a bright blue while getting more diluted.
Umbelliferon in Water
A small concentration in water fluoresces blue under UV light and green in sunlight. In ethanol the concentration shows no influence on the color, as it is always a bright yellowish green.
Umbelliferon in Ethanol
EDIT: On a second thought, the green color might come from fluorescein that was formed by a side reaction during synthesis of the umbelliferone. I will try to record absorption and emission spectra to figure out which substances are present.
While preparing the treebark for the extraction of the Aesculin (see previous entry), I noticed that some lichen, growing on the bark, glowed yellow in ultraviolet light. Under normal light it has an orange color. Some research on Wikipedia revealed the lichen as Xanthoria parietina (Xanthus meaning “yellow” in greek, parietina “on walls”). The fluorescent dye contained in the upper layers of the lichen is Parietin.
I collected some of the lichen and tried several solvents (Isopropanol, Acetone and Ethanol) to extract the parietin. All solvents were heated to their respective boiling point to accelerate the process.
The color of the solution differs between the solvents under visible light as well as under ultraviolet light. The Isopropanol-solution is dark green and fluoresces orange while the Acetone- and Ethanol-solutions have a brighter green and glow yellow.
Due to this result I tested the influence of different solvents on the color of Aesculin. Here, the effect was not as distinct as with the parietin solutions, but the brightness of the fluorescence differed.
Aesculine & Parietin Solutions in visible Light
Aesculin & Parietin Solutions in ultraviolet Light
Solutions in the images from left to right:
Aesculin in distilled Water
Aesculin in 75% Isopropanol
Aesculin in Acetone
Aesculin in 96% Ethanol
Parietin in Acetone with 33% Sodium Hydroxide
Parietin in 75% Isopropanol
Parietin in Acetone
Parietin in 96% Ethanol
Parietin in Isopropanol + NaOH (405nm)
Interestingly, the effect of the NaOH also depends on the solvent. On the one hand, the color in visible light is either violet/pink (in case of Aceton) or it stays green (in case of Isopropanol). On the other hand, the response to ultraviolet light changes. The Isopropanol solution emits a bright magenta fluorescence when irradiated with 405nm light and a dim orange fluorescence with 350nm – 370nm.
The Acetone solution shows no fluorescence with 350nm – 370nm and almost none with 405nm.
Aesculin & Parietin Solution
To further concentrate and purify the Aesculin and the Parietin, the Isopropanol solutions are slowly evaporated to crystallize the dyes.
The previous attempt with water solutions failed, due to the many other substances that solved in the water and caused mold to grow.
While searching for easily obtainable fluorescent dyes I stumbled upon the Wikipedia entry for Aesculin. This is a naturally occurring substance which exhibits a blue fluorescence under ultraviolet light (360 nm). Its main source are the bark and leaves of horse chestnut trees (Aesculus hippocastanum).
To extract the Aesculin from the tree bark a larger piece of it was broken down into small chips and put in warm/hot water.
Under normal light no change will be visible, but under ultraviolet light, the water will get blue almost instantaneously.
Afterwards, the solution needs to be filtered several times.
Filtered Aesculin Solution under UV Light
The next step is to dry the solution until the Aesculin remains as a powder.
Actually crystallisation from a boiling solution might produce a much higher yield, because the solubility in boiling water is 74g/l, as opposed to only 1.7g/l in cold water. The resulting sesquihydrate forms white needle crystals.
After building a flyback high voltage supply, which I will describe in a later post, I was experimenting with putting the electrodes into thin glass tubes. This produced much longer arcs due to the concentration of the ionized air.
To get an even better result, I tried evacuating the tubes with a syringe. To seal one end of the tube I placed a thick wire in one end and put a drop of hot glue around it. Over the other end I put a piece of PVC hose and pierced the wire through it into the tube. The entryhole was also sealed with hot glue. To ensure a tight seal some air is sucked out of the tube while the hot glue is still liquid. This way the glue fills the holes.
Tube with sealed-in Electrodes
As the glass tubes only have a volume of about 5ml and the syringe 65ml, one pull reduces the pressure inside the tube from 1bar to about 0.05bar. (p*V = const.)
When the voltage (between 20kV and 30kV) is applied to the electrodes, a continuous channel of violet (the photo does not reproduce the color correctly) nitrogen plasma is formed inside the tube. The plasma quickly heats the glass and the hot glue, so don’t apply the voltage too long or the seal will break. Magnetic fields will deflect the plasma channel.
Plasma Channel deflected by magnetic Field
These small tubes quickly got boring, so I decided to make a bigger version with a Ø30mm L=100mm plexiglas tube. To seal of the ends, I turned caps on the lathe. The caps were then fitted with a hole for the electrodes and a hose connection. The holes around the electrodes are again sealed with hot glue. To get the caps airtight, o-rings were used.
To get a low enough pressure inside the tube, the syringe has to be pulled several times. Between each pull, the tube has to be closed. This is achieved with an electric valve.
Cap with O-Ring
Tube with Cap and Hose
When the pressure inside the tube is low enough and the voltage high enough, a glowing channel of plasma will form. Due to the heat it generates in the residual air, it will bulge upwards. This will heat the tube and slowly melt the plexiglas. The plasma stream can be deflected with strong magnets or by influencing the electrostatic field around the tube, i.e. by placing your fingers near or on the tube.
Plasma Channel in Discharge Tube
Plasma Channel in Discharge Tube
With one of the smaller tubes I put a drop of ethanol (C2H5OH) inside the syringe before pulling the air out. This produced a thin ethanol vapor inside the tube and caused the plasma to glow blueish-white instead of violet.
Blueish Glow from Ethanol Atmosphere inside the Tube
Due to university and work it has been a while since the last post. But I just completed a little project that’s worth posting.
32kHz Oscillator
Several old 27C256 EPROMS were lying around unused. So I thought about a purpose for them. As I also had some 8×8 LED matrices, a little animated display came to mind.
With each frame consisting of 8×8 pixels the 32kByte EPROM can hold 4096 frames. Each byte holds one line of the display, eight bytes one frame.
The lower 3 addressbits of the EPROM have to by switched synchronously with the corresponding line on the display. This is achieved by wiring them to a 3-to-8-decoder (74*238) which in turn switches the lines. As up to eight LEDs can light up at once per line. To handle the current an ULN2308A darlington driver is used.
The columns are directly controlled by the data-output of the EPROM. To drive the LEDs a 2N2907 transistor is used.
The clock is generated by a crystal oscillator circuit consisting of a 32768 Hz crystal and an inverter gate.
The 32kHz squarewave from the oscillator is then divided by a 12-stage ripple counter (4040). The seventh to ninth stage are used for the line-addressing and are wired to the A0-A2 inputs of the EPROM and to the A,B,C inputs of the 74*238.
The next three stages are connected to a DIP-switch. The output of the switch leads to the clock input of another 4040. This way the frame-rate is selectable from 32fps, 16fps and 8fps.
Only fourteen addresspins of the EPROM are used, the fifteenth can be set to high or low via a jumper.
Logic Section of the Display Schematic
I wanted the whole circuit to fit under the LED matrix, but unfortunately the EPROM is slightly bigger, so the circuitboard protrudes about 3mm on the left and the right.
Apart from the LEDmatrix and the EPROM only SMD components were used on the two-sided PCB. The layout is rather dense and 0.3mm vias were used. Originally i wanted to etch the PCB myself, but quickly gave up that plan when the opportunity to let it manufacture for free together with other boards arose.
EPROM Display PCB
EPROM Display PCB with EPROM
EPROM Display LED Matrix
In the pictures above you can the bottom side of the populated PCB with one of the 4040’s, the 74*238, the crystal (the little golden thing), the DIP-switch and the EPROM-socket. In the next picture, the EPROM is inserted and on the last picture the LED-Matrix is lighted with some random data that was stored in one of the old EPROMs.
You can download the schematic and the board-layout (for EAGLE) here.
EPROM Display Program
To easily generate data for the display, a small program was written in Delphi. You can draw each image on the 8×8 field and save the sequence of images to a binary file that can be directly programmed into the EPROM.
And now for something completely different: A little robotics project for the weekend.
The described robot can be build entirely from model making supplies and materials from the hardware store.
Also only very few tools are needed. A metal saw, a drill press, a vice and optionally a tap will suffice.
From the model making store you need:
3 Servos with M3 thread in the axis (e.g. HX12K)
12 ball joints with M3 threads and 3mm holes in the sphere (e.g. Kavan Maxi Ball links 1405)
about 4grams of Polycaprolactone (Sold under names like ShapeLock or Friendly Plastic)
Form the hardware store you need:
850mm of M3 threaded rod (sometimes also available for model making)
27 M3 screw nuts
3 M3 screws 5mm long
3 M3 screws 15mm long
400 mm of 10mm square hollow aluminum profile (1mm wall thickness)
150×150mm metal oder wooden plate for mounting
(To control the robot you need a microcontroller of your choice.)
The first step is to divide the aluminium profile in three pieces of 100mm length and three pieces of 30mm length.
Then 4 holes are drilled and tapped in each of the pieces according to the following drawings.
Drawing of 100mm lever
Drawing of End Effector Part
Next the threaded rod is divided into six pieces of 100mm length an six pieces of 40mm length.
The 40mm pieces are screwed in the aluminium profile, centered and secured with one M3 nut on both sides.
Two ball joints are screwed on each 100mm pieces of threaded rod and aligned.
The 100mm aluminum profiles are then screwed to the servoaxis with the short M3 screws. All servos should be in the same extreme position.
Now the servos can be fixed to the groundplate. I used hot glue but you can use screws as well. The exact alignment of the servos is important.
To get it right without much measuring I printed out the drawing of the baseplate. Then the shape of the servos was cut out and the paper taped to the groundplate. The servos were placed at the right position and glued there.
When the glue has hardened you can attach the ball joints to the servo levers and secure them with one nut on every side.
Ball Joints attached to lever
To make the end effector you need to get the Polycaprolactam into its malleable state.
End Effector center piece
Therefore it is placed in a small cup with some water and heated in the microwave or on the stove until it gets transparent.
Then carefully pour the hot water away and get the plastic out. It should be touchable without burning your skin.
Now shape it into a three-edged star (see image) and slide a 30mm aluminium profile over each end.
Try to fill the profile as tight as possible and about 5mm behind the holes.
Before the plastic has cooled down completely align the three profiles in 120 degree angles.
When it has cooled down you can drill through the holes in the profile, put the three long M3 screws in and secure them with nuts.
Now place the ball joints on the threaded rod pieces of the end effector and secure them, too.
The completed end effector
The mechanical part should now be completed.
Isometric view of the delta robot
Next step is to control the servos with a microcontroller. Servos need a PWM signal with a period of 20ms and a high time from 1ms to 2ms, depending on desired position.
This can easily be generated with timers, which are available in almost every µC. To control multiple servos with only two timers and without using to much processing power a clever tactic is needed.
One timer is used to generate an interrupt every 20ms / number_of_servos. On each of those interrupts one servosignal is switched on and a second timer is started. This timer is set to overflow after 1-2ms according to the desired position of the servo. When the overflow interrupt of the second timer occurs, all servosignals are switched off. This way you do not a variable to save the current servo, because only one servos is active at a time anyway. On the next interrupt of the first timer the process repeats with the next servo. The desired positions can be saved in an array.
With this method up to 10 servos can be controlled with only two timers and very short interrupt service routines. This way there is much remaining processing power left for other calculations such as receiving and decoding commands via the UART or I²C. Maybe you can even fit the inverse kinematics into the µC.
Servo Timing diagram
The IK formulas and some explanation can be found here.
A simple servo controller using the described method can be downloaded here. (AVRStudio project with C-Code).
A quick and dirty Delphi 5 Project which sends commands to the ATmega and does the IK calculations can be downloaded here. (Contains source and executable).
The previous version of the gravitational simulation produced rather abstract results. The lists of coordinates did not say much and the import for 3DsMax was not very handy.
To overcome this problem I looked into openGL and found it quite easy to integrate.
The glut-Package for DevC++ includes all necessary files and an example project.
The whole initzalizing stuff was just copied from the example and the code from the earlier version adapted to produce the coordinates in the corrent form.
All the objects are stored in a linked list. For each frame the list is traversed and the new coordinates displayed.
Gravitational Simulation 3D
I also added a linked list to each object that stores all past coordinates. When this list ist used to plot lines between each two adjacent points the trace of the object is displayed. Currently only the trace of 2 selected objects can be displayed at a time. Those two objects also get marked with little triangles and a 3d-crosshair. Their parameters are displayed in the upper left edge of the screen, along with some additional info. To visualize the forces, accelerations and velocities the corresponding vectors can be displayed.
Velocity- and forcevectors displayed
Code can be downloaded here (Executable included).
Rotating the view is done by holding a mousbutton down and moving the cursor.
Other commands:
i Toggle Info
x Calculate Step
z Reset viewcenter to [0,0,0]
o Center blue object
k Center yellow object
t Toggle trace
p Select blue object
L Select yellow object
f Toggle force vectors
b Toggle acceleration vectors
v Toggle velocity and force vectors
+- Increase / decrease step size
n Reset world and generate 50 new objects randomly
The interfaceboards are etched, soldered and tested.
IO / Control Boards
Step- and directionsignals are generated by an ATmega32 which is controlled over RS232.
This is only for testing purpose. In the final version a PC will control the movement.
For a long time I had a layout for this circuit, but could never build it, because the layout was to small to be made by tonertransfer.
So it was the first layout I made with my new exposure unit. It’s quite small, so it fits under the LEDMatrix itself. Therefore only SMD parts are used.
It took three trys to get it right. The first failed because the etching solution was to weak, took to long and caused heavy underetching. The second was not properly exposed.
The third try worked perfectly. The alignment of the two layers was good and the etching took only 10 minutes.
74HCT138
MAX6964
Soldering the SMD resistors and transistors was not very difficult using a magnifyer and tweezers.
The 74HCT138 was more or less easy to solder, but the MAX6964 was a bit harder. (The pins have a pitch of only 0.635mm.) But with desoldering braid any superfluous solder can be removed.
The MAX6964 is controlled via I²C. It has 2 8-bit registers which switch the 16 outputs on and off and 8 8-bit registers which controll the brightness (via PWM).
To keep the layout easy and the number of vias low, i had to wire the pixels of the LED matrix in somewhat weird way. But this is easily compensated in software.
The correct order for the rows is saved in a lookup-table (just an array).
The data for one row is two bytes long. The first byte contains the data for the first four pixels. (Two bits per pixel, for red and green.) The first byte is left to right, the second byte is right to left.
Most of the code is I²C communication and transforming pixel data to the correct format for the MAX6964.
Layout and code can be downloaded here. Datasheet for MAX6964 here. (Maxim is very generous when it comes to shipping free samples…)