Se punea problema de a modifica valorile interfetei radio cu valori "custom" folosind libraria RadioMaster:
Solutia:
const RH_RF95::ModemConfig custom1 = {
RH_RF95_BW_20_8KHZ | RH_RF95_CODING_RATE_4_5,
RH_RF95_SPREADING_FACTOR_256CPS
};
rf95.setModemRegisters(&custom1);
05 February 2018
01 February 2018
APRS via LoRa II
Am finalizat partea de baliza si partea de receptie si afisare a pozitiei relative (la Target Call).
Preamble = $LRPRS
Target Callsign = YO3HJV-15
Last RX Date = 01/02/2018
Last RX Time: 12:03:56
Last Received Lat = 44.423225
GPS Lat = 44.423149
Last Received Long = 26.111503
GPS Long = 26.111181
Last Distance to Call m: 27.18 m
Last Distance to Call Km: 0.03 Km
Last Course to Call: [ENE]
70.00 degrees
Last Known Altitude = 31.00
Last Known Speed = 0.3
Last Known Course = 97.39
Battery = 4.15
Location: 44.423145,26.111177 Date/Time: 1/2/2018 10:04:02.00
Location: 44.423145,26.111177 Date/Time: 1/2/2018 10:04:02.00
Location: 44.423149,26.111175 Date/Time: 1/2/2018 10:04:03.00
Location: 44.423149,26.111175 Date/Time: 1/2/2018 10:04:03.00
In partea de inceput este sinteza informatiilor obtinute din primirea unui packet $LRPRS comparate cu informatia de la GPS-ul receptorului.
In partea de jos este un flow continuu de date de la GPS-ul receptorului.
La receptie, se verifica preambulul apoi se procedeaza la extragerea informatiei din sirul CSV.
-$LRPRS- pachet de pozitie
-$LRMSG-pachet cu mesaj
-$LRTLM-pachet exclusiv cu telemetrie
Variantele de modulatie LoRa:
O baliza RAW este de forma:
$LRPRS,YO3HJV-15,01,02,2018,12,03,56,44.423229,26.111504,3100,29,97390000,415 *
Unitatea de receptie furnizeaza pe serial info de forma:
RX Packet String is :
$LRPRS,YO3HJV-15,01,02,2018,12,03,56,44.423229,26.111504,3100,29,97390000,415 *
Last Packet RSSI = -40
Preamble = $LRPRS
Target Callsign = YO3HJV-15
Last RX Date = 01/02/2018
Last RX Time: 12:03:56
Last Received Lat = 44.423225
GPS Lat = 44.423149
Last Received Long = 26.111503
GPS Long = 26.111181
Last Distance to Call m: 27.18 m
Last Distance to Call Km: 0.03 Km
Last Course to Call: [ENE]
70.00 degrees
Last Known Altitude = 31.00
Last Known Speed = 0.3
Last Known Course = 97.39
Battery = 4.15
Location: 44.423145,26.111177 Date/Time: 1/2/2018 10:04:02.00
Location: 44.423145,26.111177 Date/Time: 1/2/2018 10:04:02.00
Location: 44.423149,26.111175 Date/Time: 1/2/2018 10:04:03.00
Location: 44.423149,26.111175 Date/Time: 1/2/2018 10:04:03.00
In partea de inceput este sinteza informatiilor obtinute din primirea unui packet $LRPRS comparate cu informatia de la GPS-ul receptorului.
In partea de jos este un flow continuu de date de la GPS-ul receptorului.
La receptie, se verifica preambulul apoi se procedeaza la extragerea informatiei din sirul CSV.
-$LRPRS- pachet de pozitie
-$LRMSG-pachet cu mesaj
-$LRTLM-pachet exclusiv cu telemetrie
Variantele de modulatie LoRa:
rf95.setModemConfig(RH_RF95::Bw125Cr45Sf128); ///< Bw = 125 kHz, Cr = 4/5, Sf =
128chips/symbol, CRC on. Default medium range
//
rf95.setModemConfig(RH_RF95::Bw500Cr45Sf128); ///< Bw = 500 kHz, Cr = 4/5, Sf =
128chips/symbol, CRC on. Fast+short range
//
rf95.setModemConfig(RH_RF95::Bw31_25Cr48Sf512); ///< Bw = 31.25 kHz, Cr = 4/8, Sf =
512chips/symbol, CRC on. Slow+long range
//
rf95.setModemConfig(RH_RF95::Bw125Cr48Sf4096); ///< Bw = 125 kHz, Cr = 4/8, Sf =
4096chips/symbol, CRC on. Slow+long range
10 January 2018
ICOM IC-7300 QRP measurements
On the ICOM IC-7300 FaceBook group i saw some discussions about the lowest power at which the radio transmitt.
LATER EDIT:
1. I had a revelation: the sensor is rated for frequencies above 10 MHz so the measurements below that frequency shall be taken with circumspection. Sorry I forget this, I rarely use it to measure the frequencies below 50 MHz.
2. The results are from my ICOM IC7300 and can be or not consistent with other similar radios.
3. LLE: I measured also with a AD8307 sensor and the values are the same!
Measuring the low power is not a simple task using common power-meters so I put on the work my NRP-Z11 Rohde-Schwarz sensor.
The sensor is able to measure very accurate the power between 200pW and 200mW (-67dbm - +23dbm) in the 10 MHz - 8 GHz range.
In the setup I used a BIRD 50A-MFN-20 attenuator (-20 db) and took measurements under that 23 dbm which can hurt the sensor.
I measured the power for "0", "5" and "10" on the "RF Power" Menu.
The results are in the XLS table below:
LE: For 5 and 10, the power is in W not mW. The above table is image and I cannot correct it.
And here is a printscreen of the R&S program:
LATER EDIT:
1. I had a revelation: the sensor is rated for frequencies above 10 MHz so the measurements below that frequency shall be taken with circumspection. Sorry I forget this, I rarely use it to measure the frequencies below 50 MHz.
2. The results are from my ICOM IC7300 and can be or not consistent with other similar radios.
3. LLE: I measured also with a AD8307 sensor and the values are the same!
07 January 2018
APRS via LoRa I
O sa notez aici cateva din etapele setarii unui echipament care foloseste un mix de tehnologie veche (APRS) cu tehnologia noua (LoRa).
Momentan, cateva din elementele pregatitoare.
-GPS uBlox NEO6MV2
-Software de evaluare si programare. U-Center de la uBlox.
-Software analiza RS232/COM Terminal V1.9b
Folosim un Arduino TRINKET PRO 3V cu GPS serial conectat la o interfata SoftwareSerial 9k6.
Utilizam doar portul de intrare (RX) al interfetei seriale pentru a face "economie" de pini.
Arduino preia tramele NMEA furnizate de GPS si selecteaza doar cele de tip $GPGGA care contin informatia de pozitie si timp UTC.
Identificarea se face pe baza prezentei substringului $GPGGA iar codul defalca informatia de longitudine, latitudine, altitudine si timp, acestea fiind separate prin virgula.
Dupa separare, le reansambleaza intr-un nou sir, de forma
$LRPRS, CALL-SSID, LAT, LONG, ALT, HHMMSSCC, K
Acesta este transmis pe Serial HW catre transceiver-ul LoRa care il emite cu 1200 baud si FEC cu periodicitatea stabilita prin SW.
ToDo: De portat pe TRINKET separarea HH, MM, SS, initial fiind verificata pe ARDUINO MEGA.
ToDo: De format trama standard APRS care va fi transmisa alternativ cu cea pe formatul de mai sus.
ToDo: De realizat functia de transformare POZ in BASE91 ASCII pentru compatibilitatea cu APRS tip MicE.
LE:
String sendLORA = PREAMBLE + "," + CALLSIGN +
"," + StringLAT + "," + StringLON + "," + StringALT +
"," + lastHH+ "," + stringMM + "," + lastSS +
"," + StringTIME + "," + stringVAL + "," + "K";
LLE:
Momentan, cateva din elementele pregatitoare.
-GPS uBlox NEO6MV2
-Software de evaluare si programare. U-Center de la uBlox.
-Software analiza RS232/COM Terminal V1.9b
Folosim un Arduino TRINKET PRO 3V cu GPS serial conectat la o interfata SoftwareSerial 9k6.
Utilizam doar portul de intrare (RX) al interfetei seriale pentru a face "economie" de pini.
Arduino preia tramele NMEA furnizate de GPS si selecteaza doar cele de tip $GPGGA care contin informatia de pozitie si timp UTC.
Identificarea se face pe baza prezentei substringului $GPGGA iar codul defalca informatia de longitudine, latitudine, altitudine si timp, acestea fiind separate prin virgula.
Dupa separare, le reansambleaza intr-un nou sir, de forma
$LRPRS, CALL-SSID, LAT, LONG, ALT, HHMMSSCC, K
Acesta este transmis pe Serial HW catre transceiver-ul LoRa care il emite cu 1200 baud si FEC cu periodicitatea stabilita prin SW.
ToDo: De portat pe TRINKET separarea HH, MM, SS, initial fiind verificata pe ARDUINO MEGA.
ToDo: De format trama standard APRS care va fi transmisa alternativ cu cea pe formatul de mai sus.
ToDo: De realizat functia de transformare POZ in BASE91 ASCII pentru compatibilitatea cu APRS tip MicE.
LE:
String sendLORA = PREAMBLE + "," + CALLSIGN +
"," + StringLAT + "," + StringLON + "," + StringALT +
"," + lastHH+ "," + stringMM + "," + lastSS +
"," + StringTIME + "," + stringVAL + "," + "K";
LLE:
$LRPRS, CALL, LAT, LON, ALT, DD, MM, YYYY, hh, mm, ss, , Analog, EOT
:
06 November 2017
Pulse Frequency Modulation IGBT controller
I have been asked by a friend to make a custom IGBT controller. Well, I heard about this marvels previously but didn't bother to read about more than the general definition.
I will not reiterate here all the theory behind the Isolated Gate Bipolar Transistors; who want to learn, there are several pages on the internet. 1, 2, 3.
After reading a lot of datasheets I decided that the best approach is to make a PFM generator working on 40-80 kHz with fixed 50/50 duty cycle, modulated with a PWM signal at around 100 kHz.
One big issue was that the 50/50 signal have to had a precise timing to match the Half-Bridge command mode. This is hard to achieve with microcontrollers but very easy if you use a specialised IC. So I start to look after this kind of circuits and found a lot of them!
The IC controller at choice was the IR2153 made by International Rectifiers (later aquired by Infineon).
Here is the waveform needed by a Half Bridge IGBT to work properly:
I did the schematic on a small breadboard and found it work from the first power-on! So, time to move on, to the variable PWM.
The simplest way to generate it was from a Arduino board using the lowest interrupt timer at 122 Hz. I wanted to use the interrupt timer because it's steady, precise and it's not affected by other "things" the microcontroller does. And I planned to do some nice things with it!
To keep the story short, I generate the signal with the Arduino, put the informations on a I2C LCD display (a nice bargraph, temperature and status) and did a test check-out at the Power On. More on that, on the small Youtube video I made. It's in Romanian but you get the point!
Here is the schematics and the code.
Oh, a big thanks to Damien Clarke who wrote a very nice library for reading analog values!!!
The CODE is available HERE ON THE GITHUB.
I will not reiterate here all the theory behind the Isolated Gate Bipolar Transistors; who want to learn, there are several pages on the internet. 1, 2, 3.
After reading a lot of datasheets I decided that the best approach is to make a PFM generator working on 40-80 kHz with fixed 50/50 duty cycle, modulated with a PWM signal at around 100 kHz.
One big issue was that the 50/50 signal have to had a precise timing to match the Half-Bridge command mode. This is hard to achieve with microcontrollers but very easy if you use a specialised IC. So I start to look after this kind of circuits and found a lot of them!
The IC controller at choice was the IR2153 made by International Rectifiers (later aquired by Infineon).
Here is the waveform needed by a Half Bridge IGBT to work properly:
I did the schematic on a small breadboard and found it work from the first power-on! So, time to move on, to the variable PWM.
The simplest way to generate it was from a Arduino board using the lowest interrupt timer at 122 Hz. I wanted to use the interrupt timer because it's steady, precise and it's not affected by other "things" the microcontroller does. And I planned to do some nice things with it!
To keep the story short, I generate the signal with the Arduino, put the informations on a I2C LCD display (a nice bargraph, temperature and status) and did a test check-out at the Power On. More on that, on the small Youtube video I made. It's in Romanian but you get the point!
Here is the schematics and the code.
Oh, a big thanks to Damien Clarke who wrote a very nice library for reading analog values!!!
The CODE is available HERE ON THE GITHUB.
Subscribe to:
Comments (Atom)
Most viewed posts in last 30 days
-
Kenwood Programing Software FIRMWARE: KDS-100 504XXXXX 4A46 PTT ID Display feature 176.86 KB CURRENT 401XXXXX F7FC Corrects lock up whe...
-
Icom programming Software GM-110SC rev.1.2. ex1725. IC-3FX 245MHZ THAILAND CB HANDY RADIO, EX2020 REV 1.0. IC-3FGX 80 CHANNELS 245MHZ THAILA...
-
Finally, the schematic of Xiegu G90 is available! Here they are, in pdf format. 1 PA RF Board 2 Small Signal Board 3 Display Unit 4 Microph...





