Jump to content

Is there a demand for custom sync sound motors?


Aapo Lettinen

Recommended Posts

Interesting Thread! Aapo, I am also working on a universal, crystal based DC motor controller. Mine is also 328p-based, but using impulses from the motor shaft to maintain speed. So independent from torque, speed is maintained with crystal accuracy. My current board is designed to be a replacement for Erno Motor viewers, but the concept is universal. I am also controlling Bauer and Braun Projectors already with this, using their organic impulses and "hooking up" to their existing controller, not replacing it. Contrilljj in mag any external camera motor would be trivial too, all I need is some impulses coming from the motor shaft or claw or so. 
 

I am also not afraid of PCB-CAD nor SMT-soldering. Also, you nowadays can order very small SMTA batches from China for little money. 
 

My code and w hematite are totally open source, so I'd be glad to join forces :)

Here for example are the boards I just got on Friday, designed to fit into the motor viewer. Note the segment disc that gets mounted on the sprocket wheel shaft and never loses a single frame impulse. :)

2EF506B0-A7CE-4713-94F3-8E99717FEDB9.jpeg.49a6a7abef21ca277f415df4ff96c653.jpeg

  • Like 1
Link to comment
Share on other sites

Here is an earlier prototype in action. 

The top line of the display shows the current frame count, the second row a SMPTE timecode. The button underneath cycles through 9, 16 2/3, 18, 24 and 25 fps — this affects the time code calculation on the one hand, the motor speed control on the other hand.

4D6CD69A-10DB-4D2E-B52D-FAD41880874A.jpeg.31890327af838ed41182e285cc0f5abe.jpeg

Link to comment
Share on other sites

The current code and pcb design is at https://github.com/fwachsmuth/ErnoCCC — very dirty still and barely documented though. 

The way it basically works: A Timer ISR increments a counter as reference pulse. The shaft impulses (optical here) are wired to Interrupt pins too, using quadrature encoding — their ISR increments another counter. 
The loop compares the counters and uses the delta to impact the motor current — that's it. 
In my example, there is also a freq measure capability using ICP1 on PB0, this is only used when the motor gets manually controlled (to show how fast it is currently running). 

To derive the motor current, I use a DAC (12 bit) and feed its output into an R2R opamp, which generates the high impedance signal for the existing motor controller. There is also a calibration routine which iterates over voltages to find the current for two reference speeds, creating the math for any intermediate frequency needed. This is necessary since friction in all viewers differ, based on condition of the belts, bearings and lubrications etc. 

Hope this helps!

Link to comment
Share on other sites

  • Premium Member
4 hours ago, Friedemann Wachsmuth said:

 

My code and w hematite are totally open source, so I'd be glad to join forces :)

Here for example are the boards I just got on Friday, designed to fit into the motor viewer. Note the segment disc that gets mounted on the sprocket wheel shaft and never loses a single frame impulse. :)

2EF506B0-A7CE-4713-94F3-8E99717FEDB9.jpeg.49a6a7abef21ca277f415df4ff96c653.jpeg

Looks like a nice design! 

that type of projects work great as open source. For camera motors there tends to be so many different systems out there that it may not be practical to develop open source gear for them it seem (especially because the potential users seem to specifically ask for a shop-installed ready to use product and are not interested in products which they could install by themselves) .

For something like a 8mm film scanner or similar project the open source would work great and a project like that could be a great opportunity for collaboration I think  :) 

Your speed control design seems to have pretty different approach to motor speed stabilisation than my current designs, especially the current based torque management logic. I investigated the current measurement approach briefly just a while ago but decided to do things other way. Maybe the current measurement logic could be added to the models as a supplementary feature, need to check it later. I have hardware for it available but chose to take different design route earlier :) 

 

Link to comment
Share on other sites

  • Premium Member
10 minutes ago, Friedemann Wachsmuth said:

Well, good luck then! ?

Thanks ?  I'll keep all you updated about my motor projects. At the moment I am making circuit board manufacturing tests and refining the design. Will probably replace some resistor with SMD counterparts and so on ?

If you are interested in film scanning related projects, please let me know ?  A easy-to-use Super8 scanner which could be ordered as a parts kit could be very useful I think and your control board design could be very easily adapted to it. Some film transport parts would need to be custom manufactured but I think there might be enough demand for this type of system to make it possible.

Link to comment
Share on other sites

No, I am not really interested in building a scanner.
I am building an open source DC motor control for projectors, cameras, viewers etc, which costs a few $ only and needs barely anything else than impulses to run 100% locked at crystal speed. It doesn't care about altering friction or differing torques, it is always precise, not needing any adjustments — just control impulses from the motor or any other directly driven part. 

Link to comment
Share on other sites

  • Premium Member

Some updated design specs for "System A". 

- I am planning to make the board much smaller by replacing some of the parts with SMD components. There is a good possibility that I will use plain processors instead of using the Arduino Micro board. The normal "old school" Atmega328PU with external crystal and regulator is still smaller than the Arduino Micro board. The main thing though is to try to keep the height of the board minimal.

- planned size of the "A" board is about 50mm x 60mm x 12mm. We'll see how it goes. I want to keep the possibility to hand assemble the boards at this stage which restricts the minimum size of the smd parts which can be used. The speed selector and the display are of course external and not counted in the dimensions.

- the much smaller size for example means that it could be possible for Simon to fit the full "A" system inside the 8mm camera if he wants. We'll see how it goes. The smaller "C" design will be cheaper though because not having display etc.

- user replaceable parts are pretty challenging to do when the board gets smaller. This "A" design is close to half of the original size I planned. It is easier to install to the camera but if there is problems with it, it is easier to replace the whole board than start to swap components. Most users would replace it anyway instead of trying to troubleshoot and replace parts. I will try to make the replacement process as easy as possible in case it has to be done by the user. 

Other stuff:

- It will take some time to get the "Real Crystal Sync" models working. I will need a good oscilloscope because my Chinese cheap-o oscilloscope is BS and does not work correctly. So I will need to collect some money to be able to continue the "B" and "C" designs. The Coronavirus also causes some delays because it takes more time to get components from suppliers. 

Planned timeline of the project:

- "A"-system finished and available in late May

- Systems "B" and "C" finished probably in June or July 

 

Link to comment
Share on other sites

  • Premium Member

Slowly adapting my motor control code to AtTiny85 microcontroller. The code needs to be rewritten completely but these small controllers are useful in small systems. This current prototype uses a slot type optical sensor and a small test motor with a quickly made encoder made out of tape. It uses the "A" type code so it measures the frequency and compares the frequency numbers. Seems to work pretty great already and the multi slot encoder enhances the stability a lot. Output circuit updated to mosfet btw.

49666760243_9d15e095f1_b.jpg

 

Programming the Attiny85's using Arduino Uno as a programmer. These fingernail sized Attiny processors are quite handy for prototypes and will probably use them in the final boards as well 

49667585032_b075fa402e_b.jpg

Link to comment
Share on other sites

  • Premium Member

Learning to use binary counters (right side chip) and decade counters (left side chip) by running the Attiny85 as an oscillator (center microchip). 

49676499433_b470e954f4_c.jpg

I will probably use these simple logic circuits on the first "real crystal" setups where the oscillator frequency is divided in stages to get the desired reference speed for 12.5fps, 25fps and 50fps. 

When doing harder-to-divide frame rates like 24.00fps I will probably use programmable counters to get the reference close enough to the target (1/1000fps or so would be nice) . That will be later.

I will do the 25fps version first because it is just so much simpler to do. So a single speed prototype first and then can add speeds to it later. 

This work is for the "B"-style system.

Link to comment
Share on other sites

Why external counters? You should just use the Atmega/Attiny Timers. They are crystal acurate and give you almost any frequency directly without extra hardware.

This gives you exactly 25 Hz on a 16 MHz 328p:

// TIMER 1 for interrupt frequency 25 Hz:
cli(); // stop interrupts
TCCR1A = 0; // set entire TCCR1A register to 0
TCCR1B = 0; // same for TCCR1B
TCNT1  = 0; // initialize counter value to 0
// set compare match register for 25 Hz increments
OCR1A = 9999; // = 16000000 / (64 * 25) - 1 (must be <65536)
// turn on CTC mode
TCCR1B |= (1 << WGM12);
// Set CS12, CS11 and CS10 bits for 64 prescaler
TCCR1B |= (0 << CS12) | (1 << CS11) | (1 << CS10);
// enable timer compare interrupt
TIMSK1 |= (1 << OCIE1A);
sei(); // allow interrupts

ISR(TIMER1_COMPA_vect) {
  // Anything written here is called 25 times per second
  // once the above got executed
}

Here is a good primer, but there are many others too. 

Oh, and for 24 fps, you should create a 264 Hz timer and divide by 11 for the closest match. You get 264.000264000264... Hz with 

OCR1A = 60605
TCCR1B |= (1 << CS10);  // Prescaler 1

which, divide by 11, gives you 24.000024.. Hz — that's more accurate than any crystal is. 

Edited by Friedemann Wachsmuth
Link to comment
Share on other sites

  • Premium Member

that would be one good possibility, will have to look it next month when I have more time :) 

I will need the basic logic IC:s and the oscillators for other purposes as well so it makes sense to make some of the prototypes with them

Link to comment
Share on other sites

  • 2 weeks later...

Hello,

         Apologies for being so late to the party. Just purchased a Cameflex CM3 and would be looking to have crystal locked 25 fps. I've done a bit od soldering in my time and would be interested in building my own controller with the necessary information. However, as I'm not too technical and unable to write code I would be looking for a fairly simple solution. I have also been looking into modified Synch Motors for Bolex but don't know if they have enough torque to do the job on a CM3. AZ-Spectrum seem to have this: http://www.az-spectrum.com/Eclair_CM3.html but as yet they have been back with a price. What caught my eye was this: http://www.az-spectrum.com/bolex_cr.html. I imagine that it would be quite pricey as well.

I would rather do it myself as if I know how it works I'll also know how to fix it if it goes wrong. 

Can you help?

Link to comment
Share on other sites

  • Premium Member

If you only need 25fps then the easiest way is to purchase the 230volts operated 25fps sync original cameflex sync motor and use it with normal small 12v inverter. This gives you enough stability to shoot sync sound and is very simple to do because you can just use off the shelf inverter from any store. There is one of these motor on eBay at the moment I think.

Adapting a cameflex motor should be possible. I haven't checked but I believe one could fit a optical encoder assembly inside. Maybe if removing the rheostat. It could be fitted inside the camera body as well. 

If you want to do your own system there is multiple options. One option is to adapt Friedemann's system he posted here earlier, it looked like a good option for this type of work. Another option would be to take part of some of my systems (for example I could do the crystal oscillator module for you with readily usable 250.00Hz output and you could do the control electronics by yourself). Or you could do everything diy design if you want.)

The phase lock function and the motor control logic are the most challenging parts. You can do digital phase lock by using XOR gate circuit and some additional parts and it is also possible to do pwm motor control from scratch by using multi-kHz oscillator signal with rc network waveform shaping and operational amplifier circuit to change the duty cycle. Or you could use readily available motor controllers. Or use something like a 555 oscillator to do the motor signal. Microcontrollers can do pwm as well but most of the easy ones have only low speed pwm easily available, it works ok but creates additional noise.

One option is to use simple Arduino speed control like my very first prototype. It was based on the pulseIn function. It just does not have precise enough speed stability so I abandoned the design and went for full phase locked true crystal sync instead.

If you want to do the project all by yourself you should expect it taking about 6 months of your time. Might be faster if you adapt parts of available systems instead of doing everything from scratch

Edited by aapo lettinen
Link to comment
Share on other sites

  • Premium Member
13 hours ago, Marek Budzynski said:

 I would be interested in building my own controller with the necessary information. However, as I'm not too technical and unable to write code I would be looking for a fairly simple solution.

Actually assembling the system is maybe 0.1% of the work and all the rest is the design and testing work. Calculating and testing and building prototypes and making circuit board designs and reading datasheets and comparing parts options and so on. Basically if there is no available system which is already made for your camera and motor model, then someone needs to design one and adapt and test it. That is why I estimated it would take about 6 months of your time to build one should you want to do it by yourself.  Because you will need to learn a lot and do multiple versions and test them all. You will also need additional tools which you may not have yet. So making a diy desing from scratch only for your own camera may not be practical if you only have one camera. If having many of them or doing a open source project for fun, then it could be practical.

 

Friedemann has a type of system which could probably be used for your purposes but it would need adapting as well. Either you would need to do the adapting work or he has to do it and somehow make it worth the time and resources he has to put to the project.

 

Personally I am developing the crystal systems for my own camera models and maybe for other cameras as well as long as there is at least five cameras of the same model which will be adapted and I will get all the developing costs back. Making small scale production of five to 20 pieces per design and charging for the boards and for installing them to get the costs back. Small runs because I figured out that the end users need lots of customisation and making one single design would not work because of this. And making zillions of different design and manufacturing the boards and custom mechanical parts takes lots and lots of time so one cannot do it for free :)

I am making a crystal oscillator module at the moment which has traditional frequency dividers for five different speeds for a system which uses 10 slot optical encoder. As I said in the previous post, it is possible that you would for example use this module as a base of your system and then do the motor control electronics by yourself if you want. The module should be available in June, don't know about the cost but for hand assembled ones it could be something like 200+shipping or something like that. Though if you are really doing a diy design you could figure out the oscillator part by yourself as well, it is not the toughest part of the system so should be easy enough to do as long as you have a good oscilloscope available

Link to comment
Share on other sites

  • Premium Member
On 3/30/2020 at 7:19 PM, Marek Budzynski said:

Hello,

         Apologies for being so late to the party. Just purchased a Cameflex CM3 and would be looking to have crystal locked 25 fps. I've done a bit od soldering in my time and would be interested in building my own controller with the necessary information. However, as I'm not too technical and unable to write code I would be looking for a fairly simple solution. I have also been looking into modified Synch Motors for Bolex but don't know if they have enough torque to do the job on a CM3. AZ-Spectrum seem to have this: http://www.az-spectrum.com/Eclair_CM3.html but as yet they have been back with a price. What caught my eye was this: http://www.az-spectrum.com/bolex_cr.html. I imagine that it would be quite pricey as well.

I would rather do it myself as if I know how it works I'll also know how to fix it if it goes wrong. 

Can you help?

I had time to open one of my motors briefly. Is this the motor type you would want to adapt? 

I checked it and it seems that it would be easiest to try to build a magnetic hall type encoder assembly to that silvery part which is used to attach the bakelite gear in place. the part seems to be aluminium so it should work and that is the spot where there is most space available inside the housing. Making the magnetic assembly should be possible without disassembling everything. I would personally not want to use optical encoder for this because the system is placed inside the gear housing and there is vaseline and oil particles flying around which could smear the optical parts and it would thus need to be regularly cleaned to keep it in working condition.

49733817786_b7c71bb09e_b.jpg

 

49733273283_58e5ccbe3a_b.jpg

 

49733817551_a71827a0f9_b.jpg

 

 

This is how much there is place for the encoder assembly:

49733273343_51de6fb3a4_b.jpg

I would try to attach the magnets to that silver part which holds the black bakelite gear in place.

 

49733273408_6496ae4f44_b.jpg

 

The actual motor axle is another possible place for the encoder but it may be challenging to remove that gear first and there is still very little space.

49733817766_3bf02042a7_b.jpg%20

 

The silver part removed. I would try to do the magnetic encoder to that silver part which attaches black gear to the axle.

49734141807_2c07167ffa_b.jpg%20

 

 

Basic crystal sync logic, extremely simplified.  The Hall sensor would read the magnetic encoder attached to the silvery aluminium part and the Hall sensor signal then amplified and converted to square wave. You would use a crystal oscillator to generate a reference frequency which is the same amount of pulses per second you will expect to get from the encoder ( if wanting 25fps camera speed and in this case you would want 50 pulses per second from the oscillator because you have two slot encoder) . The oscillator signal is square wave with similar duty cycle than the amplified encoder signal will be.

The motor signal and the oscillator signal are compared against each other. The phase and frequency difference of the signals is calculated and used to make a control signal to adjust the motor speed controller. The motor speed controller generates a pulse width modulated signal which is amplified with cmos motor driver circuit and used to control the motor.

49733273068_47a3f86eb2_b.jpg

I hope this helps a little. The actual circuit needs to be figured out by you if you will want to make a system like this. We will help of course if it's possible but nobody probably wants to make the whole circuit design and circuit board design and testing for you ( and it would NOT be DIY anymore if someone else would do all the hard work for you :)  ) 

 

Link to comment
Share on other sites

That's the exact motor I've got. I have another one that is completely in pieces so I could use that one to modify and test.

Looks like I'll be working on this as you've given me an excellent place to start. The thing that I'd change from the outset is the need for frequency dividers. 25fps is my main goal.

I'll let you know how I get on and ask for help when I come across an insurmountable problem.

Thank you so much for the detailed photos. They're a great help.

Kind regards

Marek

Link to comment
Share on other sites

  • Premium Member

optical encoder could of course used but it may need regular cleaning to maintain working condition. It is much easier to attach to the axle (it may be possible to use mirror surfaces for reflecting the light so black-silver masking might even be enough. The silver part or the end of the same axle which has the bakelite end cap would probably be the easiest places to attach the optical encoder. Just beware that the oil and vaseline may mess up the readings every now and then so you need to regularly open it and clean it. 

With optical the duty cycle stuff and the frequency divisions are easier though because the slot count is not as limited. You may want to try different approaches if attempting this project ?

Link to comment
Share on other sites

  • Premium Member

freq dividers are needed in every case because you start with multi-MHz oscillator signal and need to get it down to for example 50Hz. The design I am currently working on uses 2.048MHz oscillator and three dividers to get a total of 5 different speed signals and one intermediate signal of about 30kHz which can be used for other purposes later. But if using real crystal oscillator you need to divide the frequency in stages so you will easily get some other speeds as well and it may not require much extra work to get three speeds instead of one. It makes it a bit more complicated if you use small slot count on the encoder but you just need to calculate which crystal+divider+encoder option is the most suitable option.

for example one can get 16fps for 10-slot encoder this way: 16fps = 160Hz (2.048Mhz / 1024000 / 512000 / 256000 / 128000 / 64000 / 32000 / 16000 /  1600 / 160.00)  

Another possibility is using normal non-crystal oscillator for generating the reference frequency. Like a simple 555 oscillator or similar. 

Another possibility is to use a microcontroller for frequency division like Friedemann suggested. But then you need to learn programming which was not your initial goal ?  Using the microcontroller for frequency generation is easier when you will need to get multiple carefully selected speeds. With crystals you may need to take what you got so that the frequency division circuit does not get overly complicated. 

Link to comment
Share on other sites

I have an old working Arduino chip so it might be worth trying to use that. I'll have a look at some of the Arduino sites to see if there's any similar pre-programmed stuff that I can modify. Hall Effect Sensors are fairly easy to get so I can build a test model to start with and see where I get.

 

Link to comment
Share on other sites

  • Premium Member
21 hours ago, Marek Budzynski said:

I have an old working Arduino chip so it might be worth trying to use that. I'll have a look at some of the Arduino sites to see if there's any similar pre-programmed stuff that I can modify. Hall Effect Sensors are fairly easy to get so I can build a test model to start with and see where I get.

 

Great, let us know how it goes :) 

As far as I know there is no useful phase lock info on the Arduino sites but you can check if you can find anything. this type of stuff is normally not done with Arduinos but if you only use them for certain specific tasks then they can maybe be somewhat practical. I used the Arduino pulseIn function for my early prototypes but it is not precise enough for this type of work. It is an option however if you find out that the real crystal sync is too much work and expense. 

You will run into serious troubles without a very good oscilloscope, you will really need it for finishing the project if you want to do real crystal sync. Other tools are necessary as well. Just a warning, this project is not going to be fast or easy or cost effective for you in any case. If you only want to adapt a single camera or two motors, it would cost less and be easier to use a system someone else has designed and you would probably get better support as well because there would be more people who know how that particular system works and could help with the possible problems. If doing your own system, you are the only person who knows how it works and how to repair it and then you are completely on your own to solve the issues.  

I am intending to do multiple different systems and adapt at least couple of dozen cameras so I have invested signifiant amounts of time and money to the project. I think it's been about 800 work hours and couple of thousand euros so far and it's only halfway of the project... that is why I suggested it may not be practical to design the system only for one single motor

Link to comment
Share on other sites

Aapo, it sometimes feels like you are over-complicating things a little ? 

Generating almost any custom frequency with crystal precision is about 10 lines of Code on any Arduino, no extra hardware needed for dividing. Just make sure your Arduino uses a crystal, not a resonator, many cheap clones use the latter, which is less precise. 

Also, I don't think there is a need for phase and frequency measurement. Just count and compare the pulses from both sources. The diff is the input for your motor driver. Done. 

Link to comment
Share on other sites

  • Premium Member

Yes, it can be... sometimes I complicate things to understand all the aspects of them. It is a thought process I think, it's not meant to shoot down other person's ideas or anything :) 

I think this thread has filled its purpose, I got the ideas and specs needed to finish my designs. I will post a new threads when my own projects progress further, I have now all the info needed so I'll need to concentrate on R&D for a moment. Some of the designs will use microcontroller for frequency generation as well but not all of them as a primary source. I still see merits on the traditional crystal systems as well.

 

Friedemann, I don't remember your project being posted here on the forum before, can you create a new thread where you could present it better including links and website? I understood you are in the middle of writing the documentation but a own thread for your project would help your open source system to get more attention and promotion.

 

Marek, can you start a new thread if needing info or advises for your project? I don't think all the people who could help are following this thread so you could get more advises that way. 

Link to comment
Share on other sites

  • 1 month later...
  • Premium Member
On 4/5/2020 at 8:13 PM, aapo lettinen said:

I think this thread has filled its purpose, I got the ideas and specs needed to finish my designs. I will post a new threads when my own projects progress further, I have now all the info needed so I'll need to concentrate on R&D for a moment.

My Kinor16cx-2m and Konvas projects are continuing in this thread: 

I will probably do most of my crystal sync related updates there for the next couple of months because I will mostly work on the Kinor16 motor prototype. I will also post videos every now and then ? 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...