Use DDS 9850 board with Arduino and 2n7000 for very high quality professional sounding AM signal. I'll paste the code if needed. Its output is 10mW. Feed it to two parallel 2n7000 each with 1ohm source resistor and set the standing current to 15ma each with a variable pot connected to their gates. It's drain can then be connected to the final linear amplifier. No crystals or complex synthesizer needed. A simple Arduino code sets the TX frequency!!
https://ibb.co/3TMm2gbArduino Sketch.
#define W_CLK 13 // Pin 13 - connect to AD9850 module word load clock pin (CLK)
#define FQ_UD 8 // Pin 8 - connect to freq update pin (FQ)
#define DATA 10 // Pin 10 - connect to serial data load pin (DATA)
#define pulseHigh(pin) {digitalWrite(pin, HIGH); digitalWrite(pin, LOW); }
// transfers a byte, a bit at a time, LSB first to the 9850 via serial DATA line
void tfr_byte(byte data)
{
for (int i=0; i<8; i++, data>>=1) {
digitalWrite(DATA, data & 0x01);
pulseHigh(W_CLK); //after each bit sent, CLK is pulsed high
}
}
// frequency calc from datasheet page 8 = <sys clock> * <frequency tuning word>/2^32
void sendFrequency(double frequency) {
int32_t freq = frequency * 4294967295/125000000; // note 125 MHz clock on 9850
for (int b=0; b<4; b++, freq>>=8) {
tfr_byte(freq & 0xFF);
}
tfr_byte(0x000); // Final control byte, all 0 for 9850 chip
pulseHigh(FQ_UD); // Done! Should see output
}
void setup() {
// configure arduino data pins for output
pinMode(FQ_UD, OUTPUT);
pinMode(W_CLK, OUTPUT);
pinMode(DATA, OUTPUT);
pulseHigh(W_CLK);
pulseHigh(FQ_UD); //
}
void loop() {
sendFrequency(1e6); // Enter freq here, Right now Set to 1000,000 Hz ,1000KHz, 1MHz . Example, for 1540KHz enter 1.54e6 in the sendFrequency bracket above. I hope this is easy to understand
while(1);
}