Pagina 2 di 4

Re: Moduli Lora con Level Shifter per Arduino

Inviato: mer 28 apr 2021, 16:14
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.

Re: Moduli Lora con Level Shifter per Arduino

Inviato: mer 28 apr 2021, 17:02
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.

Re: Moduli Lora con Level Shifter per Arduino

Inviato: mer 28 apr 2021, 21:25
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.

Re: Moduli Lora con Level Shifter per Arduino

Inviato: gio 29 apr 2021, 0:24
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.

Re: Moduli Lora con Level Shifter per Arduino

Inviato: gio 29 apr 2021, 9:18
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.

Re: Moduli Lora con Level Shifter per Arduino

Inviato: gio 29 apr 2021, 13:17
da Renzo
Aggiornamento 2: Funziona tutto alla perfezione! Alimentanto il trasmettitore con un regolatore lineare sono riuscito a far comunicare i 2 moduli.

Re: Moduli Lora con Level Shifter per Arduino

Inviato: gio 29 apr 2021, 13:41
da pgv
Congratulazioni!!!

Re: Moduli Lora con Level Shifter per Arduino

Inviato: gio 29 apr 2021, 13:48
da Renzo
A te :D :D :D Sono comunque piccole soddisfazioni. Grazie!

Re: Moduli Lora con Level Shifter per Arduino

Inviato: ven 30 apr 2021, 11:04
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);


}

Re: Moduli Lora con Level Shifter per Arduino

Inviato: ven 30 apr 2021, 12:11
da pgv
E che cosa succede? Io non posseggo le schedine LoRa per provare.