Premium Member Kamran Pakseresht Posted October 5, 2024 Premium Member Posted October 5, 2024 I’ve been interested in understanding how crystal sync works a bit more clearly lately, and I happened upon this crystal control unit for Bolex cameras for a mere 5 dollars. I don’t own a Bolex so I really just got it so I could take a look inside. I figured I could share the photos here. The part I was interested in myself was the oscillator- which appears to be a 24khz oscillator - is this related to the 24fps this unit is intended to lock the motor to? I’m not sure if this unit actually governs the motor or if it just provides the signal needed for the camera to do that work.
Premium Member Aapo Lettinen Posted October 5, 2024 Premium Member Posted October 5, 2024 normally older crystal sync devices use binary and decade counters to divide the crystal frequency to a frequency which is the same than the amount of pulses per second coming from the motor's encoder. So if for example encoder generates 10 pulses per one frame of film shot, one would use dividers to divide the crystal frequency to 240Hz square wave for 24fps (24 * 10) and then make circuits which match the motor speed to that 240Hz signal. using binary and decade counter dividers necessitates that the needed end frequency is directly dividable using this simple counter technology. so only certain encoder slot counts and certain crystal frequencies could be used to get the needed end result. For example if using 10slot encoder (10 pulses per frame) it is possible to divide the needed 250Hz for 25fps from 2.048MHz crystal and 240Hz for 24fps from 2.4576MHz crystal. But both 250 and 240Hz cannot be divided from the same crystal frequency. So if you want to have multiple speeds which cannot be divided from the same crystal by simple old technology you would need to make two separate crystal oscillators with separate dividers (for example one generating 12.5fps, 25fps, 50fps, etc. and another generating 12fps, 24fps, 48fps, etc.) . with microcontrollers one can do the division with software which opens tons of better possibilities including creating both 24fps and 25fps references from same crystal etc. you can see the old technology limiting factors when looking the crystal frequencies the old crystal motors can run at. if starting to calculate the frequency dependencies you will notice that they are all divided from the same source and that is why there is some oddball frequencies too which may not be used for anything useful, they were mainly added just to get more presets because more is better 🙂 on newer systems where programmable dividers or microcontrollers used the selector may have every preset carefully though through and selected rather than taken what you got. big difference when you can actually decide what fps each preset is rather than selecting a set of random framerates easiest to divide from single source just because there is one fps you want and the rest "come with it free of charge) 1
Premium Member Aapo Lettinen Posted October 5, 2024 Premium Member Posted October 5, 2024 for example if you have 24kHz crystal you could use for example 74hc390 dual decade counter to divide the crystal frequency with 5, then divide with two, then divide with 5, then divide with 2 to get a total division of 100 and end result of 240Hz square wave with 50% duty cycle. It is entirely possible they made it this way, you can look what the ic:s on the boards are and how they are connected. It would be very easy to divide the 240Hz with a single counter IC so there is pretty good chance there is 390 ic on board as it would be the easiest and most compact way to get the reference for 24fps if the encoder was 10slot 1
Premium Member Aapo Lettinen Posted October 5, 2024 Premium Member Posted October 5, 2024 (edited) btw still have tons of my old test boards which use simple counters to make reference frequencies. making new ones too but the old ones are possible to get cheaply and quickly so can be very useful if you for example need 240Hz crystal frequency for something or if that Bolex motor controller is actually 240Hz / 10slot system , in that case I have like 5 or more board options as I used to make lots of stuff for 10slot encoders so you could cheaply add more crystal speeds to that bolex controller by feeding the extra speeds from my board. I used to do old school dividers before getting lazy and starting to do everything with software 😄 the old school stuff is not compact but they are easy to understand and have advantages if wanting to use simple rotary switches for speed selection. and are cooler looking too 😄 Edited October 5, 2024 by Aapo Lettinen 1
Premium Member Aapo Lettinen Posted October 5, 2024 Premium Member Posted October 5, 2024 (edited) ever wondered why watch/clock crystals are always 32.768kHz? That is because that frequency can be divided with one binary counter IC to exactly 1Hz frequency when the 32768 is divided half 15 times in a row. that 1Hz signal the advances the clock once each second. same logic applies to other crystal oscillators using simple dividers. you know what end frequency you want and what dividing tools you have, then calculate what the needed crystal frequency is and check if that exact frequency is available from the suppliers Edited October 5, 2024 by Aapo Lettinen
Premium Member Kamran Pakseresht Posted October 6, 2024 Author Premium Member Posted October 6, 2024 Thanks for all the great info Aapo! I peeled up the top circuit to get a look underneath - wasn’t able to find much when searching these part numbers, but I bet at least some of these are the binary counters you mentioned.
Mark Dunn Posted October 6, 2024 Posted October 6, 2024 Never mind the function- that device is a work of art. The sunburst heatsink on the transistor is spectacular. 1
Friedemann Wachsmuth Posted October 6, 2024 Posted October 6, 2024 (edited) The date code on these chips indicates that they are probably from 1973/74. Manufacturer is National Semiconductor — the reason that you didn't find datasheets easily is that these were "military grade". NS names the 74xx series chip as 84xx if they e.g. allowed higher temperature grades. So, basically they are 7490 and 7493. Both are monolithic counters. They contain four master-slave flip-flops and additional gating to provide a divide-by-two counter (total counts up tp 10) and a three-stage binary counter (counts up to 16). As far as the PCB traces suggest, the 7490 were configured as counting to 10, so resulting in dividing the 24 kHz down to 240 Hz — as Aapo suggested. The motor probably didn't provide 10 pulses per rotation though but a power of 2 (so 2, 4, 8 or 16) — hance the xx93. What Aapo didn't mention though is that just having two frequencies is not controlling the motor speed yet. comparing the pulse count and turning it into a (non-oscillating) control voltage for the motor is the other half of the challenge. They have achieved this without any OpAmp! I am rather amused by that ancient type of crystal coming in a glass tube — especially since it seems to be bedded on some foam and mounted with a... rubberband? 🙂 14 hours ago, Aapo Lettinen said: it is possible to divide the needed 250Hz for 25fps from 2.048MHz crystal and 240Hz for 24fps from 2.4576MHz crystal. But both 250 and 240Hz cannot be divided from the same crystal frequency. This isn't quite right. You cannot only divide by powers of 2 (like 8192 or 1024) with discrete counters. With e.g. a 4017 you can also divide by 3, 4, 5, 6, 7, 8, 9 or 10 — just the duty cycle changes unless you fix it with further flip-flops. So, a 6 MHz crystal (common for USB interfaces) can provide 24 and 25 fps references, a 18 MHz crystal (typical SD-TV pixel clock) can provide 18, 24 or 25 fps references with such "old school dividers". I am glad that you finally switched to software, Aapo — are you using the 328p timer configs I shared with you back in the day? 🙂 Edited October 6, 2024 by Friedemann Wachsmuth 1
Friedemann Wachsmuth Posted October 6, 2024 Posted October 6, 2024 For anybody interested, below is my C code (free) that configures the "Timer 1" on a AtMega328p (aka Arduino) running on at 16 MHz crystal to rather precise 9, 16 2/3, 18, 24 or 25 Hz pulse machines. The results (e.g. 24.000024 Hz) are higher precision than a normal crystal itself — if required (and you are using a temperature compensated crystal or whatever) , the small diff from actual 24 Hz can rather easily be corrected in software. bool setupTimer1forFps(byte sollFpsState) { // start with a new sync point, no need to catch up differences from before. timerFrames = 0; projectorFrames = 0; timerDivider = 0; if (sollFpsState >= 1 && sollFpsState <= 5) { Serial.print(F("New Timer FPS State: ")); Serial.println(sollFpsState); noInterrupts(); // Clear registers TCCR1A = 0; TCCR1B = 0; TCNT1 = 0; // CTC TCCR1B |= (1 << WGM12); switch (sollFpsState) { case FPS_9: OCR1A = 10100; // 198.000198000198 Hz (16000000/((10100+1)*8)), // divided by 22 is 9,000009.. Hz // TCCR1B |= (1 << CS11); // Prescaler 8 timerFactor = 22; break; case FPS_16_2_3: OCR1A = 14999; // 16 2/3 Hz (16000000/((14999+1)*64)) TCCR1B |= (1 << CS11) | (1 << CS10); // Prescaler 64 timerFactor = 1; break; case FPS_18: OCR1A = 10100; // 198.000198000198 Hz (16000000/((10100+1)*8)), // divided by 11 is 18.000018.. Hz // or 18 2/111,111 // or 2,000,000/111,111 // TCCR1B |= (1 << CS11); // Prescaler 8 timerFactor = 11; break; case FPS_24: OCR1A = 60605; // 264.000264000264 Hz (16000000/((60605+1)*1)), // divided by 11 is 24.000024.. Hz // or 24 8/333,333 // or 8,000,000 / 333,333 // TCCR1B |= (1 << CS10); // Prescaler 1 timerFactor = 11; break; case FPS_25: OCR1A = 624; // 25 Hz (16000000/((624+1)*1024)) TCCR1B |= (1 << CS12) | (1 << CS10); // Prescaler 1024 timerFactor = 1; break; default: break; } // Output Compare Match A Interrupt Enable TIMSK1 |= (1 << OCIE1A); interrupts(); } else { // invalid fps requested Serial.println(F("Invalid FPS request")); return false; } } 2
Premium Member Aapo Lettinen Posted October 6, 2024 Premium Member Posted October 6, 2024 6 hours ago, Friedemann Wachsmuth said: I am glad that you finally switched to software, Aapo — are you using the 328p timer configs I shared with you back in the day? 🙂 I have used mcu dividers for many years and almost all the finished stuff uses them, I'm just not using the 328 as have found more practical mcu's for my projects. Even my first Konvas 15epss motor partially used software dividers, it was just a hybrid system which generated some frequencies with "old-school" binary dividers too because it was fun to design and made the dual rotary switch selector system a bit more effiently working.
Friedemann Wachsmuth Posted October 6, 2024 Posted October 6, 2024 Ah, I see. I must have mixed you up then with someone else who insisted against using uCs an/or DDS for frequency generation a while ago. Sorry. 🙂
Dr. Thomas Faehrenkemper Posted October 7, 2024 Posted October 7, 2024 (edited) Here is th circuit diagram for the Bolex unit - for those who are interested. Edited October 7, 2024 by Dr. Thomas Faehrenkemper 2
Friedemann Wachsmuth Posted October 7, 2024 Posted October 7, 2024 Thanks, Thomas. So my date-guess was right (Schematics from 1972), and it is indeed dividing by 800, so the tacho seems to send 8 pulses per revolution. A very neat and pragmatic control circuit design indeed.
Friedemann Wachsmuth Posted October 7, 2024 Posted October 7, 2024 EDIT: After looking closer at the schematics, I think the tacho is actually sending 80 pulses per revolution — the 8493 divides that down to 10, matching the 240 Hz from the decimal divider behind the crystal.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now