Archive of the former Yahoo!Groups mailing list: Homebrew PCBs

previous by date index next by date
previous in topic topic list next in topic

Subject: Re: Red Laser Diode Rotating Drum Photo Plotter

From: "cunningfellow" <andrewm1973@...>
Date: 2006-04-29

> > andrewm wrote:
> > So far I have built a text-book 4046 PLL
> > multiplier. This has been hooked up to a
> > servo motor I scavanged from something.

> Jan wrote:
> My, what a lot of circuitry :-)

The final board shall probably have an ATMega
an FT232 and a HC4046. Apart from that some
discreets or possibly an laser diode current
driver IC.

I am building it in sections for prototyping.
Each section probably with its own atmel. All
these atmels will be combined into the one
chip in the end.

> If you are going to use a 16MHz ATMega, you
> don't need the analog PLL or XOR gates. Just
> pipe the encoder signals into the processor's
> digital input ports.

I don't think I need the XOR gate or the HC393
(they are only there for the proto boards in test)
but I think the PLL is pretty necessary. The
opto encoder on the back of the servo motor does
not have anywhere near the resolution needed to
do 1000 dpi - hence the multiplication by the
PLL.

I am going to do some fancy tricks with the
ATMEL so I don't need the divider - but I will
still need the phase comparator and the VCO.

I don't think a 16 Mhz Atmel has enough omph
to get that kinda thing done in software.

From my math the pixel clock for a 2000 dpi plot
of the kinda size and speed we are talking is
200Khz. Thats about 80 CPU clocks per pixel.
If you are going to do the pixel clock in SW
you wont be able to use a shift register. (the
spi port). So you have to do two control loops,
decode group 3 fax and a SW shift register with
hopefully uS accuracy in 80 clock cycles.

If you have a PLL/VCO provide the pixel clock
you can use the SPI port in slave mode to be
a hardware shift register. You then have 640
CPU clocks to get the next 8 pixels ready.

Call me wuss for not trimming my ASM code
enough - but I think I shall stick to an
external PLL.


> You don't need the motor control chip either.
> Take a PWM output and run it into an RC (low
> pass filter), so with 50% duty cycle you get
> 2.5V with say .1V sawtooth ripple. Compare
> that with the voltage across the motor,
> lowpass filtered. Use the comparator output to
> drive a high-side switch (PFET) to drive the
> motor.

HUH - who said motor control chip. The PWM
straight from an Atmel into a FET on the low
side. The Atmel counts the pulses from a
single channel of the encoder to do speed feed-
back. Cheaper and less chips than a high side
switch and whats all the complexity of going
into the analog domain about :S

Digital pulses in - Digital pulses out. I spend
so much of my life avoiding analog circuits.
There is no way I am going to invite them in
the front door for no good reason.

<SNIP>

> > Unfortunatly the encoder wheel on the servo
> > does not have an index mark - so I will have
> > to scavange another one from somewhere.
>
> If you can keep an accurate count of the encoder
> pulses, you don't need a super-accurate index
> pulse. In fact you don't need an index pulse at
> all, if you are willing to set the cylinder at
> the "zero" position manually before starting the
> cylinder motor.

I will keep track of pulses line to line - but I
am NOT willing to manually ZERO the thing. I am
a dork - and if there is something I can do wrong
I will 50% of the time. And wasting every second
sheet of film because I could no be bothered
making it automatically detect the start of frame
is not my idea of fun.

Remeber Andrew = hopeless dork that makes many
many mistakes.

> If you do want an index pulse, you could use the
> laser to supply the light...

Or get an encoder with an index pulse - seeing as
it is very common anyways. I could do ALL sorts of
things with lasers or my own opto interupter or
maybe even aligning the PCB with stonehenge. But
at the and of the day - the optical detector on the
back of ALL servo motors have an index out. All
you need to do is find a motor with a wheel that
has the index marks etched. Free index pulse as
far as I am concerend.

<BIG SNIP>

Also - I am not trying to be nasty about any feed-
back about my circuit. I welcome all feedback
especially if I am doing something stupid and
obviously wrong. But please can we limit "I
∗think∗ it would be better if you did this" kinda
feed back till I have something working. Even if
you think I am going about it the hard way. (rather
than the wrong way)

Once I have it running (give me 6 months) feel
free to bag me endlessly for having one too many
resistors in there and tell me I could have made
it much less complex if I had done something
differently.

Thanks :D

On a side note - feel free to bag my spelling. I
know its terrible.