Indicador de nivell d'aigua sense fils ultrasònic: alimentat per energia solar

Proveu El Nostre Instrument Per Eliminar Problemes





Un controlador de nivell d’aigua per ultrasons és un dispositiu que pot detectar els nivells d’aigua d’un dipòsit sense cap contacte físic i enviar les dades a un indicador LED distant en mode GSM sense fils.

En aquest post anem a construir un indicador de nivell d’aigua sense fils alimentat per ultrasons basat en ultrasons mitjançant Arduino en què els Arduinos transmetin i rebin a una freqüència sense fils de 2,4 GHz. Detectarem el nivell de l’aigua al dipòsit mitjançant ultrasons en lloc del mètode tradicional d’elèctrodes.



Visió general

L’indicador de nivell d’aigua és un aparell obligatori si teniu una casa o fins i tot viviu en una casa de lloguer. A indicador de nivell d’aigua mostra una dada important per a casa que és tan important com la lectura del comptador d’energia, és a dir, quanta aigua queda? Per tal de poder fer un seguiment del consum d’aigua i no cal que pugem al pis de dalt per accedir al dipòsit d’aigua per comprovar quanta aigua queda i no deixar de sobte l’aigua de l’aixeta.

Vivim el 2018 (en el moment d’escriure aquest article) o més tard, podem comunicar-nos a qualsevol lloc del món a l’instant, llançar un cotxe de carreres elèctric a l’espai, llançar satèl·lits i rovers cap a Marte, fins i tot podem arribar a terra humana éssers a la lluna, encara no hi ha cap producte comercial adequat per detectar quanta aigua queda als nostres dipòsits d’aigua?



Podem trobar que els indicadors del nivell de l’aigua els elaboren els estudiants de 5è de primària per a la fira de ciències a l’escola. Com aquests projectes tan senzills no van arribar a la nostra vida quotidiana? La resposta és que els indicadors de nivell del dipòsit d’aigua no són projectes simples que un alumne de 5è pugui fer per a casa nostra. Hi ha molts consideracions pràctiques abans de dissenyar-ne un.

• Ningú vol fer un forat al cos del dipòsit d’aigua per obtenir electrodes que puguin filtrar aigua més endavant.
• Ningú vol fer funcionar filferro de 230/120 VCA a prop del dipòsit d’aigua.
• Ningú vol substituir les piles cada mes.
• Ningú vol fer passar cables llargs addicionals penjats a una habitació per indicar el nivell de l’aigua, ja que no està previst durant la construcció de la casa.
• Ningú vol utilitzar l’aigua que es barreja amb la corrosió metàl·lica de l’elèctrode.
• Ningú vol eliminar la configuració de l’indicador de nivell d’aigua mentre neteja el tanc (a l’interior).

Alguns dels motius esmentats anteriorment poden semblar una tonteria, però, trobareu menys satisfactoris amb els productes disponibles en el comerç amb aquests inconvenients. Per això, la penetració d’aquests productes és molt menor entre les llars mitjanes *.
* Al mercat indi.

Després de considerar aquests punts clau, hem dissenyat un indicador pràctic de nivell d’aigua que hauria d’eliminar els inconvenients esmentats.

El nostre disseny:

• Utilitza un sensor d’ultrasons per mesurar el nivell de l’aigua, de manera que no hi ha cap problema de corrosió.
• Indicació sense fils del nivell de l'aigua en temps real a 2,4 GHz.
• Bona intensitat de senyal sense fils, suficient per a edificis de 2 plantes.
• No s'alimenta la xarxa elèctrica de CA ni es substitueix la bateria.
• Alarma de dipòsit ple / desbordament mentre s’omple el dipòsit.

Investiguem els detalls del circuit:

Emissor:

El circuit transmissor sense fils que es col·loca al dipòsit enviarà dades sobre el nivell d’aigua cada 5 segons 24/7. El transmissor consta de sensor Arduino nano, ultrasònic HC-SR04, mòdul nRF24L01 que connectarà el transmissor i el receptor sense fils a 2,4 GHz.

Un panell solar de 9 V a 12 V amb una sortida de corrent de 300 mA alimentarà el circuit del transmissor. Una placa de circuit de gestió de bateries carregarà la bateria d’ió Li, de manera que podrem controlar el nivell de l’aigua fins i tot quan no hi hagi llum solar.

Explorem com col·locar el sensor d'ultrasons al dipòsit d'aigua:

Tingueu en compte que heu d’utilitzar la vostra creativitat per muntar el circuit i protegir-vos de la pluja i la llum solar directa.

Talleu un petit forat per sobre de la tapa del tanc per col·locar el sensor d’ultrasons i segleu-lo amb algun tipus d’adhesiu que pugueu trobar.

col·locació del sensor d’ultrasons en un dipòsit d’aigua

Ara mesureu tota l’alçada del dipòsit des de baix fins a la tapa i escriviu-la en metres. Ara mesureu l'alçada de la capacitat de retenció d'aigua del dipòsit tal com es mostra a la imatge anterior i escriviu-la en metres.
Cal introduir aquests dos valors al codi.

Esquema del transmissor:

connexions transmissores d

NOTA: nRF24L01 utilitza 3,3 V ja que Vcc no es connecta a la sortida de 5 V d’Arduino.

Font d'alimentació del transmissor:

disseny d’alimentació per ultrasons del controlador de nivell d’aigua

Assegureu-vos que la potència de sortida del vostre panell solar, és a dir, la sortida (volt x corrent) sigui superior a 3 watts. El solar panell ha de ser de 9V a 12V.

Es recomana un panell de 12V i 300mA que podeu trobar fàcilment al mercat. La bateria hauria d’estar al voltant dels 3,7 V 1000 mAh.

Mòdul de càrrega de 5V 18650 Li-ion:

La imatge següent mostra un estàndard Circuit carregador 18650

L'entrada pot ser USB (no s'utilitza) o externa de 5V des de LM7805 IC. Assegureu-vos que obteniu el mòdul correcte, tal com es mostra a dalt, hauria de tenir-lo TP4056 protecció, que té una bateria baixa de tall i protecció contra curtcircuits.

La sortida d’aquest s’ha d’alimentar a l’entrada de XL6009, que augmentarà a una tensió més alta, mitjançant un petit tornavís de sortida XL6009, s’ha d’ajustar a 9V per a Arduino.

Il·lustració del convertidor XL6009 de CC a CC:

D’aquesta manera es conclou el maquinari del transmissor.

Codi per a l'emissor:

// ----------- Program Developed by R.GIRISH / Homemade-circuits .com ----------- //
#include
#include
RF24 radio(9, 10)
const byte address[6] = '00001'
const int trigger = 3
const int echo = 2
const char text_0[] = 'STOP'
const char text_1[] = 'FULL'
const char text_2[] = '3/4'
const char text_3[] = 'HALF'
const char text_4[] = 'LOW'
float full = 0
float three_fourth = 0
float half = 0
float quarter = 0
long Time
float distanceCM = 0
float distanceM = 0
float resultCM = 0
float resultM = 0
float actual_distance = 0
float compensation_distance = 0
// ------- CHANGE THIS -------//
float water_hold_capacity = 1.0 // Enter in Meters.
float full_height = 1.3 // Enter in Meters.
// ---------- -------------- //
void setup()
{
Serial.begin(9600)
pinMode(trigger, OUTPUT)
pinMode(echo, INPUT)
digitalWrite(trigger, LOW)
radio.begin()
radio.openWritingPipe(address)
radio.setChannel(100)
radio.setDataRate(RF24_250KBPS)
radio.setPALevel(RF24_PA_MAX)
radio.stopListening()
full = water_hold_capacity
three_fourth = water_hold_capacity * 0.75
half = water_hold_capacity * 0.50
quarter = water_hold_capacity * 0.25
}
void loop()
{
delay(5000)
digitalWrite(trigger, HIGH)
delayMicroseconds(10)
digitalWrite(trigger, LOW)
Time = pulseIn(echo, HIGH)
distanceCM = Time * 0.034
resultCM = distanceCM / 2
resultM = resultCM / 100
Serial.print('Normal Distance: ')
Serial.print(resultM)
Serial.println(' M')
compensation_distance = full_height - water_hold_capacity
actual_distance = resultM - compensation_distance
actual_distance = water_hold_capacity - actual_distance
if (actual_distance <0)
{
Serial.print('Water Level:')
Serial.println(' 0.00 M (UP)')
}
else
{
Serial.print('Water Level: ')
Serial.print(actual_distance)
Serial.println(' M (UP)')
}
Serial.println('============================')
if (actual_distance >= full)
{
radio.write(&text_0, sizeof(text_0))
}
if (actual_distance > three_fourth && actual_distance <= full)
{
radio.write(&text_1, sizeof(text_1))
}
if (actual_distance > half && actual_distance <= three_fourth)
{
radio.write(&text_2, sizeof(text_2))
}
if (actual_distance > quarter && actual_distance <= half)
{
radio.write(&text_3, sizeof(text_3))
}
if (actual_distance <= quarter)
{
radio.write(&text_4, sizeof(text_4))
}
}
// ----------- Program Developed by R.GIRISH / Homemade-circuits .com ----------- //

Canvieu els valors següents al codi que heu mesurat:

// ------- CHANGE THIS -------//
float water_hold_capacity = 1.0 // Enter in Meters.
float full_height = 1.3 // Enter in Meters.
// ---------- -------------- //

Això conclou el transmissor.

El receptor:

controlador de nivell d’aigua ultrasònic controlador esquemàtic

El receptor pot mostrar 5 nivells. Alarma, quan el dipòsit va assolir la capacitat màxima absoluta de retenció d’aigua mentre s’omplia el dipòsit. Del 100 al 75%: els quatre LED brillaran, del 75 al 50% tres LED brillaran, del 50 al 25% dos LED brillaran, del 25% i menys d’un LED.
El receptor es pot alimentar amb bateria de 9V o des de carregador de telèfon intel·ligent a USB cable mini-B.

Codi del receptor:

// ----------- Program Developed by R.GIRISH / Homemade-circuits .com ----------- //
#include
#include
RF24 radio(9, 10)
int i = 0
const byte address[6] = '00001'
const int buzzer = 6
const int LED_full = 5
const int LED_three_fourth = 4
const int LED_half = 3
const int LED_quarter = 2
char text[32] = ''
void setup()
{
pinMode(buzzer, OUTPUT)
pinMode(LED_full, OUTPUT)
pinMode(LED_three_fourth, OUTPUT)
pinMode(LED_half, OUTPUT)
pinMode(LED_quarter, OUTPUT)
digitalWrite(buzzer, HIGH)
delay(300)
digitalWrite(buzzer, LOW)
digitalWrite(LED_full, HIGH)
delay(300)
digitalWrite(LED_three_fourth, HIGH)
delay(300)
digitalWrite(LED_half, HIGH)
delay(300)
digitalWrite(LED_quarter, HIGH)
delay(300)
digitalWrite(LED_full, LOW)
delay(300)
digitalWrite(LED_three_fourth, LOW)
delay(300)
digitalWrite(LED_half, LOW)
delay(300)
digitalWrite(LED_quarter, LOW)
Serial.begin(9600)
radio.begin()
radio.openReadingPipe(0, address)
radio.setChannel(100)
radio.setDataRate(RF24_250KBPS)
radio.setPALevel(RF24_PA_MAX)
radio.startListening()
}
void loop()
{
if (radio.available())
{
radio.read(&text, sizeof(text))
Serial.println(text)
if (text[0] == 'S' && text[1] == 'T' && text[2] == 'O' && text[3] == 'P')
{
digitalWrite(LED_full, HIGH)
digitalWrite(LED_three_fourth, HIGH)
digitalWrite(LED_half, HIGH)
digitalWrite(LED_quarter, HIGH)
for (i = 0 i <50 i++)
{
digitalWrite(buzzer, HIGH)
delay(50)
digitalWrite(buzzer, LOW)
delay(50)
}
}
if (text[0] == 'F' && text[1] == 'U' && text[2] == 'L' && text[3] == 'L')
{
digitalWrite(LED_full, HIGH)
digitalWrite(LED_three_fourth, HIGH)
digitalWrite(LED_half, HIGH)
digitalWrite(LED_quarter, HIGH)
}
if (text[0] == '3' && text[1] == '/' && text[2] == '4')
{
digitalWrite(LED_full, LOW)
digitalWrite(LED_three_fourth, HIGH)
digitalWrite(LED_half, HIGH)
digitalWrite(LED_quarter, HIGH)
}
if (text[0] == 'H' && text [1] == 'A' && text[2] == 'L' && text[3] == 'F')
{
digitalWrite(LED_full, LOW)
digitalWrite(LED_three_fourth, LOW)
digitalWrite(LED_half, HIGH)
digitalWrite(LED_quarter, HIGH)
}
if (text[0] == 'L' && text[1] == 'O' && text[2] == 'W')
{
digitalWrite(LED_full, LOW)
digitalWrite(LED_three_fourth, LOW)
digitalWrite(LED_half, LOW)
digitalWrite(LED_quarter, HIGH)
}
}
}
// ----------- Program Developed by R.GIRISH / Homemade-circuits .com ----------- //

Això conclou el receptor.

NOTA: si no hi ha LEDs brillants, el que significa que el receptor no pot obtenir senyal del transmissor. Heu d’esperar 5 segons per rebre el senyal del transmissor després d’encendre el circuit receptor.

Prototips de l'autor:

Emissor:

prototip de transmissor d

Receptor:

prototip de receptor d

Si teniu cap pregunta sobre aquest circuit de control de nivell d’aigua sense fil ultrasònic alimentat per energia solar, no dubteu a expressar-lo al comentari. Podeu obtenir una resposta ràpida.




Anterior: Com fer circuits de convertidor d’augment simple Següent: Com dissenyar un convertidor Flyback: tutorial complet