yaesufc-40control
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| yaesufc-40control [2026/07/18 05:06] – [The RF Front End] admin | yaesufc-40control [2026/07/18 05:32] (current) – [Photos & Media] admin | ||
|---|---|---|---|
| Line 104: | Line 104: | ||
| ===== The RF Front End ===== | ===== The RF Front End ===== | ||
| - | [{{: | + | [{{: |
| While studying the schematic I found two signals coming from the CPU which distracted me, going to relays near the RF input, labelled **ATT_RL** and **CAL_RL**, feeding a network that made no sense to me at first - a cluster of enormous 20W resistors with heatsinks (a 180Ω across the top of a Pi, two 33Ω in the legs) dumping into a small resistive bridge and a sampling transformer, | While studying the schematic I found two signals coming from the CPU which distracted me, going to relays near the RF input, labelled **ATT_RL** and **CAL_RL**, feeding a network that made no sense to me at first - a cluster of enormous 20W resistors with heatsinks (a 180Ω across the top of a Pi, two 33Ω in the legs) dumping into a small resistive bridge and a sampling transformer, | ||
| Line 119: | Line 119: | ||
| ===== Getting a Standalone Tune ===== | ===== Getting a Standalone Tune ===== | ||
| - | The path to a working tune was not a straight line. A few key realizations, | + | The path to a working tune was not a straight line. Here are a the key things I discovered while banging my head on the bench: |
| - | - **The tuner is not autonomous.** Simply transmitting into a reset tuner does nothing - no relay activity, no messages. In bypass, the bridge detector is disconnected from the line, so the tuner is physically blind to SWR until something commands it into measurement mode. WA2FZW' | + | - **The FC-40 is not autonomous.** Simply transmitting into a reset tuner does nothing - no relay activity, no messages. In bypass, the bridge detector is disconnected from the line, so the tuner is physically blind to SWR until something commands it into measurement mode. What lead me astray on this topic was a comment |
| - | - **Ordering | + | - **Sequencing |
| - | - **Success latches natively.** When the tuner actually finds a match, it holds it across key cycles all on its own - no '' | + | - **Success latches natively.** When the tuner actually finds a match, it holds it across key cycles all on its own - no '' |
| The working procedure, with nothing but an Arduino, power, and a keyed carrier: | The working procedure, with nothing but an Arduino, power, and a keyed carrier: | ||
| - | - Key the radio into a steady low-power CW carrier (5-10W). | + | - Key the radio into a steady low-power CW carrier. (Make sure the frequency is clear, first!) |
| - While transmitting, | - While transmitting, | ||
| - Watch the bus: '' | - Watch the bus: '' | ||
| - Unkey. | - Unkey. | ||
| - | I have confirmed successful, latching | + | I have confirmed successful matches on multiple bands this way, verified both by the radio' |
| - | + | ||
| - | < | + | |
| ==== Open Questions ==== | ==== Open Questions ==== | ||
| * **F0 recall.** Whether '' | * **F0 recall.** Whether '' | ||
| - | * **The E0 init handshake.** | + | * **The E0 init handshake.** |
| - | * **The variant ack codes.** I have observed '' | + | * **The variant ack codes.** I have observed '' |
| ===== RFI - A Cautionary Note ===== | ===== RFI - A Cautionary Note ===== | ||
| - | Testing at the bench with the Arduino sitting within a foot of the tuner and a live 10m wire produced spectacular garbage on the receive line the moment a match completed and full power hit the antenna. The line would spew hundreds of bytes - '' | + | Testing at the bench with the Arduino sitting within a foot of the tuner and a live wire sometimes |
| - | These are not real data. Written in binary they are almost all 1-bits, the classic signature of RF glitching an idle-high UART line into framing errors. Tellingly, the spew only ever appears | + | These are not real data. Written in binary they are almost all 1-bits, the classic signature of RF glitching an idle-high UART line into framing errors. Tellingly, the spew only ever appears |
| - | + | ||
| - | The mitigation plan for the next test session: put real distance between the tuner and the microcontroller (8-pin mini-DIN on a run of Cat6, using its twisted pairs, with the Arduino perhaps ten feet away), ferrite chokes on both the data cable and the USB cable, and a solid short ground bond. At 4800 baud there is enormous timing margin, so a longer cable costs us nothing. | + | |
| - | + | ||
| - | <note warning> | + | |
| + | The mitigation plan for a future test session: put real distance between the tuner and the microcontroller (8-pin mini-DIN on a run of Cat6 probably, using its twisted pairs, with the Arduino perhaps ten feet away), more ferrite chokes on both the data cable and the USB cable, and maybe grounded metal shielding around the Arduino? At 4800 baud there is enormous timing margin, so a longer cable shouldn' | ||
| ===== The Test Sketch ===== | ===== The Test Sketch ===== | ||
| - | Below is the current state of the testing firmware. It targets an **ATmega32U4** board (Leonardo/ | + | Below is the current state of the testing firmware. It targets an ATmega32U4 board with normal Arduino firmware |
| ==== What it does ==== | ==== What it does ==== | ||
| Line 161: | Line 155: | ||
| * Lets you send commands from the Arduino IDE Serial Monitor: wakeup, the full init sequence, individual '' | * Lets you send commands from the Arduino IDE Serial Monitor: wakeup, the full init sequence, individual '' | ||
| * Frames commands correctly, with the ~50 ms wake gap after '' | * Frames commands correctly, with the ~50 ms wake gap after '' | ||
| - | * Detects " | + | * Detects " |
| - | * Collapses rapid RFI bursts into a single suppressed-count line so real, well-spaced bytes remain visible. | + | * Collapses rapid RFI bursts into a single suppressed-count line so real, well-spaced bytes remain visible |
| - | * Loudly flags any unrecognized byte, so new response variants can't hide. | + | * Loudly flags any unrecognized byte, so new response variants can't hide. I'll update this page as I find more. |
| ==== What it does NOT do (yet) ==== | ==== What it does NOT do (yet) ==== | ||
| - | * **It is not a controller.** It cannot key your radio - you supply the carrier by hand (or with a separate PTT arrangement). The commanded sequence is issued by you, timed against the carrier you're holding. | + | * **It is not a controller.** It cannot key your radio - you supply the carrier by hand (or with a separate PTT arrangement). The commanded sequence is issued by you, timed against the carrier you're holding. I've just got a morse key next to my keyboard. |
| - | * **It does not trust its own success/ | + | * **It does not trust its own success/ |
| - | * **The response-code interpretation is provisional.** '' | + | * **The response-code interpretation is provisional.** '' |
| - | * **No memory / recall logic, no E0 handshake automation** beyond a bare '' | + | * **No memory / recall logic, no E0 handshake automation** beyond a bare '' |
| * It is a **bench diagnostic tool**, full stop. It is not fit for unattended or production use. | * It is a **bench diagnostic tool**, full stop. It is not fit for unattended or production use. | ||
| + | ==== Honesty Moment ==== | ||
| + | I did use generative AI to help me with this sketch. I'm not super great at putting this kind of stuff together in a clean fashion. Between the work of those before me, and banging my head on the keyboard, I was able to get sequences that worked, and got the tuner doing what it needed to do. Once I got that far, I used Anthropic' | ||
| + | |||
| + | If you don't like that, I understand, and you should be able to use the above descriptions and resources to write your own methods. | ||
| ==== Code ==== | ==== Code ==== | ||
| Line 189: | Line 187: | ||
| * | * | ||
| * Acknowledgement: | * Acknowledgement: | ||
| - | * control protocol published by John Price (WA2FZW), and on the anonymous | + | * control protocol published by John Price (WA2FZW), and Albin Stigo' |
| * FC-30 reverse-engineering notes. Thanks for sharing openly. | * FC-30 reverse-engineering notes. Thanks for sharing openly. | ||
| * | * | ||
| Line 457: | Line 455: | ||
| * Investigate the MONITOR / PC port. | * Investigate the MONITOR / PC port. | ||
| - | ===== Photos ===== | + | ===== Photos |
| + | |||
| + | * {{ : | ||
| + | * {{ : | ||
| - | {{gallery>: | + | {{gallery>: |
yaesufc-40control.1784351163.txt.gz · Last modified: by admin
