I wont go into depths of the project, because there is too much unreleated to the scope of this thread.
In short: Im modifying 70s FM radio with all new & custom internals... auto seek fm i2c tuner, amplifier, preamp, speaker with ported box inside the radio...
Small stepper motor is used to move the scale pointer.
Im trying to get the most out of it, I`m taking my time for this one, so far everything is superb, scale is super accurate, I spent last 2 months just
designing the audio preamplifier. Now I need to put everything together and choose the wiring for everything, so here comes the I2c:
1.) I2c is only connected between FM tuner and arduino.
2.) Wiring for it will be only about 5cm long.
3.) Stepper motor with it`s driver will be about 20cm away, I will build RF shield around.
(There is alot of mixed info on the internet about my concerns bellow, I know that best will come with trial & error, but I want to hear your opinions.)
I would like to avoid a ground loop; is star ground at the PSU enough or do I need additional grounding?
I guess I should use something shielded like cat5 or maybee even thick audio signal cable? Or should I just go with twisted pair?
Some use pullup resistors, some decouple with capacitors, some do both... what should be done circuit-vise?
I noticed, that stepper will jam the fm signal, I fixed that, but now my concern is that arduino can inject noise into tuner and cause it to skip stations while on
auto-search. I will see what I can do on the PWM side for the stepper aswell.
All measures will be taken to filter out the power supply side & stepper side of the project.
I have seen you are doing some great projects and was wondering if you could share how you managed to get the Becker display to work (Code and Hardware). I'm referring to your old post:
I know this does not directly relate to the above topic, but not sure how to otherwise get in contact.
I checked various sources and put this together for you.
I2C Isolation Approach
Use a dedicated I2C isolator chip
I2C is bidirectional, so you can’t just use standard opto-isolators. Use a chip specifically designed for isolating I2C lines. Some good options include:
ADuM1250 or ADuM1251 (Analog Devices)
ISO1540 or ISO1541 (Texas Instruments)
PCA9510, PCA9511, or PCA9646 (NXP)
These chips isolate both SDA and SCL lines and handle the bidirectional nature of I2C safely.
Example wiring with ADuM1250:
Connect VDD1 and GND1 to the Arduino side.
Connect VDD2 and GND2 to the FM tuner side (NOTE separate power source).
SDA and SCL pass through the isolator (SDA1 ↔ SDA2, SCL1 ↔ SCL2).
This should create two separate I2C domains with isolation between them. Make sure each side has appropriate pull-up resistors if required.
Power supply isolation
Power the FM tuner with a clean, separate 3.3V or 5V supply. You can use: A linear regulator (LDO) from 5V for clean 3.3V or 'preferred' A small isolated DC-DC converter for full isolation
Avoid sharing power or ground lines between the tuner and stepper driver to reduce noise coupling. Do mechanical coupling with a non conductive material such as plastic.
Line filtering
If full isolation isn’t practical, you can still reduce interference:
Add small resistors (100 ohms) in series with SDA and SCL to dampen noise
Add 0.1 µF ceramic capacitors near the FM tuner's power pin
Route SDA and SCL as twisted pairs with ground (SDA+GND, SCL+GND) if wires are long
Physically separate motor wiring from tuner and signal paths
Keep I2C slow
Stick with 100 kHz I2C clock speed (standard mode). Higher speeds are more susceptible to interference. I have had good luck at 50 kHz. even slower will not hurt.
Check tuner chip
Knowing the FM tuner IC helps. Common I2C-based tuners include:
RDA5807M, TEA5767, SI4703
Some of these are sensitive to noise and benefit greatly from clean power and careful layout.