Moduli Lora con Level Shifter per Arduino

Progetti Arduino
Avatar utente
pgv
Messaggi: 484
Iscritto il: gio 17 set 2020, 13:16
Località: Ginevra

Re: Moduli Lora con Level Shifter per Arduino

Messaggio da pgv »

Una cosa: per creare una alimentazione da 3.3 V a partire da una da 5 V tramite partitore resistivo bisogna assicuraris che il partitore sia abbastanza "rigido" da evitare fluttuazioni negative della tensione prodotta a seguito di variazioni della corrente assorbita. Una regola "a spanna" e' di far passare nel partitore almeno 10 volte la corrente massima utilizzata dall'apparecchiatura alimentata. In particolare, vedo che la schedina LoRa in questione assorbe (a 433 MHz) 1.6 mA se non fa nulla, 12 mA in ricezione e 93 mA in trasmissione.
Il datasheet dice anche che funziona con alimentazioni a partire da 2.5 V.

Il partitore suppongo sia formato da due resistenze in serie tra 5 V e terra, di cui quella "lato terra" dovrebbe avere una resistenza doppia dell'altra per produrre 3.3 V senza carico. Chiamiamole "R" e "2R". Quando la schedina LoRa assorbe 93 milliAmpere, affinche' l'uscita del partitore sia a 2.5 V bisogna che:
- il prodotto I * R (caduta attraverso la resistenza "alta") sia uguale a (5 V - 2.5 V) (perche' l'uscita si porta a 2.5 V);
- il prodotto (I - 93 mA) * 2R (la corrente che NON va nella schedina LoRa passa per la resistenza "bassa") sia uguale a 2.5 V.
Date queste due condizioni, fatti due conti viene fuori che R deve valere AL MASSIMO 13.44 Ohm ( e 2R quindi 26.88 Ohm), altrimenti nel momento in cui la schedina LoRa si mette a trasmettere la tensione con cui e' alimentata "crolla" al di sotto dei 2.5 V minimi necessari per funzionare. E temo che sia questo il motivo per cui, dopo aver scritto "LoRa Transmitter", si ferma tutto...

Possibili soluzioni:
1. NON utilizzare 13.5/27 Ohm per il partitore perche' senza carico ci passano 5 V / (13.5 + 27 Ohm) = circa 125 mA ossia 0.625 W. Sotto carico di 93 mA, passiamo a 2 * 93 mA (a 2.5 V meta' corrente passa nel LoRa e meta' nella resistenza "bassa") quindi 0.93 W. Non ci siamo...
2. Verificare se l'Arduino sotto mano e' in grado di fornire i 93 mA a 3.3 V (non tutti i modelli hanno l'uscita, non tutti forniscono abbastanza corrente, l'Uno "vero" e' dato per 125 mA. Il Nano NON ha un regolatore da 3.3 V on-board, e pare che l'uscita 3.3 V sia limitata a 50 mA) e servirsi di quei 3.3 V;
3. Utilizzare un regolatore A BASSA CADUTA per produrre i 3.3 V a partire dai 5 V, per esempio un LM1117-3.3 che ha una caduta massima di 1.2 V a 800 milliAmpere e che richiede solo due condensatori addizionali.
4. Utilizzare un Arduino "di nuova generazione" alimentato a 3.3 V anche lui, buttare via la schedina traslatrice e vivere per sempre felici e contenti... Beh, non e' proprio cosi' ma temo sia la direzione da considerare nel futuro quasi immediato. Con tutte le implicazioni del caso dato che il processore difficilmente rimane il fidato ATMEGA328P.
Renzo
Messaggi: 21
Iscritto il: lun 1 lug 2019, 10:06

Re: Moduli Lora con Level Shifter per Arduino

Messaggio da Renzo »

Ho usato una resistenza da 220 ohm e un trimmer da 1 k ohm, ho regolato quest'ultimo inserendo solo un arduino collegato tramite usb. Se non sbaglio comunque il pin 5V di arduino dovrebbe fornire in uscita la corrente max della porta usb del pc (500mA). Questo discorso l'ho fatto solo per il tx perchè Lora Rx è alimentato con i 3.3V del secondo arduino collegato all'altra porta usb del pc.
Avatar utente
pgv
Messaggi: 484
Iscritto il: gio 17 set 2020, 13:16
Località: Ginevra

Re: Moduli Lora con Level Shifter per Arduino

Messaggio da pgv »

Right. Con 220 Ohm e 440 di trimmer (altrimenti non si sono i 3.3 V) che corrente passa nel partitore? 5 V / (220 + 440) Ohm = 7.6 milliAmpere. Se la schedina LoRa cerca di assorbire 93 mA (che le occorrono quando trasmette secondo il datasheet!) che caduta di tensione avremo sui 220 Ohm collegati ai 5 V? 93 mA * 220 Ohm = 20.5 V. Improbabile. Anche i 15 mA necessari per ricevere causerebbero una caduta di 15 mA * 220 Ohm = 3.3 V.
Decisamente, un partitore resistivo cosi' non e' in grado di alimentare la scheda LoRa.
Renzo
Messaggi: 21
Iscritto il: lun 1 lug 2019, 10:06

Re: Moduli Lora con Level Shifter per Arduino

Messaggio da Renzo »

Provo a impostare un regolatore LM 317 e vedo un pò cosa succede. Non ci avevo minimamente pensato al discorso del partitore, effettivamente la corrente è troppo limitata.
Avatar utente
pgv
Messaggi: 484
Iscritto il: gio 17 set 2020, 13:16
Località: Ginevra

Re: Moduli Lora con Level Shifter per Arduino

Messaggio da pgv »

Occhio che l'LM317 puo' aver bisogno di far cadere un paio di Volt per regolare e partiamo da 5.0 V, 3.0 invece di 3.3 non dovrebbe essere una tragedia ma anche i livelli logici in uscita si riducono di conseguenza.
Renzo
Messaggi: 21
Iscritto il: lun 1 lug 2019, 10:06

Re: Moduli Lora con Level Shifter per Arduino

Messaggio da Renzo »

Aggiornamento 2: Funziona tutto alla perfezione! Alimentanto il trasmettitore con un regolatore lineare sono riuscito a far comunicare i 2 moduli.
Avatar utente
pgv
Messaggi: 484
Iscritto il: gio 17 set 2020, 13:16
Località: Ginevra

Re: Moduli Lora con Level Shifter per Arduino

Messaggio da pgv »

Congratulazioni!!!
Renzo
Messaggi: 21
Iscritto il: lun 1 lug 2019, 10:06

Re: Moduli Lora con Level Shifter per Arduino

Messaggio da Renzo »

A te :D :D :D Sono comunque piccole soddisfazioni. Grazie!
Renzo
Messaggi: 21
Iscritto il: lun 1 lug 2019, 10:06

Re: Moduli Lora con Level Shifter per Arduino

Messaggio da Renzo »

Ciao, avrei un dubbio su come collegare un altro potenziometro sul modulo Tx e un'altra uscita sul modulo Rx. Il codice che ho implementato è questo, ho provato a duplicare gli ingressi e le uscite, ma evidentemente mi sfugge qualcosa. :?


------------------------------------------------------------------TX
#include <SPI.h>
#include <LoRa.h>
int pot = A0;

void setup() {
Serial.begin(9600);
pinMode(pot,INPUT);

while (!Serial);
Serial.println("LoRa Sender");
if (!LoRa.begin(433E6)) {
Serial.println("Starting LoRa failed!");
while (1);
}
}

void loop() {
int val = map(analogRead(pot),0,1024,0,255);
LoRa.beginPacket();
LoRa.print(val);
LoRa.endPacket();
delay(50);

}
-----------------------------------------------------------------------Rx


#include <SPI.h>
#include <LoRa.h> //Download here: http://electronoobs.com/eng_arduino_LoRa_SX1278.php.php
int LED = 3;
String inString = ""; // string to hold input
int val = 0;


void setup() {
Serial.begin(9600);
pinMode(LED,OUTPUT);

while (!Serial);
Serial.println("LoRa Receiver");
if (!LoRa.begin(433E6)) { // or 915E6
Serial.println("Starting LoRa failed!");
while (1);
}
}

void loop() {

// try to parse packet
int packetSize = LoRa.parsePacket();
if (packetSize) {
// read packet
while (LoRa.available())
{
int inChar = LoRa.read();
inString += (char)inChar;
val = inString.toInt();
}
inString = "";
LoRa.packetRssi();
}

Serial.println(val);
analogWrite(LED, val);


}
Avatar utente
pgv
Messaggi: 484
Iscritto il: gio 17 set 2020, 13:16
Località: Ginevra

Re: Moduli Lora con Level Shifter per Arduino

Messaggio da pgv »

E che cosa succede? Io non posseggo le schedine LoRa per provare.
Rispondi