Inhoudsopgave:
- Stap 1: Principe
- Stap 2: Sensor, voeding en controller
- Stap 3: De supervisor IC
- Stap 4: De printplaat (PCB)
- Stap 5: Coderen
- Stap 6: Installatie op tank
Video: UltraSonic vloeistofniveauregelaar - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:14
Inleiding Zoals u waarschijnlijk weet, heeft Iran droog weer en is er een gebrek aan water in mijn land. Soms, vooral in de zomer, is te zien dat de overheid het water afsluit. De meeste appartementen hebben dus een watertank. Er is een 1500 liter tank in ons appartement die voor water zorgt. Ook zijn er 12 wooneenheden in ons appartement. Als gevolg hiervan kan worden verwacht dat de tank zeer snel leeg raakt. Aan de tank is een waterpomp bevestigd die het water het gebouw in stuurt. Wanneer de tank leeg is, werkt de pomp zonder water. Deze situatie veroorzaakt een verhoging van de motortemperatuur en in de loop van de tijd kan dit leiden tot uitval van de pomp. Enige tijd geleden gebeurde deze pompstoring voor de tweede keer voor ons, en na het openen van de motor zagen we dat de spoeldraden waren verbrand. Nadat we de pomp hadden vervangen, om dit probleem weer te voorkomen, besloot ik een waterniveauregelaar te maken. Ik was van plan een circuit te maken om de stroomtoevoer van de pomp af te sluiten wanneer het water onder de lage limiet in de tank kwam. De pomp werkt pas als het water tot een hoge limiet stijgt. Na het passeren van de hoge limiet zal het circuit de voeding weer aansluiten. In het begin heb ik via internet gezocht of ik een geschikt circuit kon vinden. Ik vond echter niets passends. Er waren enkele op Arduino gebaseerde waterindicatoren, maar daar kon mijn probleem niet worden opgelost. Als gevolg hiervan heb ik besloten om mijn waterniveauregelaar te ontwerpen. Een alles-in-één pakket met een duidelijke grafische gebruikersinterface om parameters in te stellen. Ik heb ook geprobeerd om EMC-normen in overweging te nemen om er zeker van te zijn dat het apparaat in verschillende situaties geldig is.
Stap 1: Principe
U kent het principe waarschijnlijk al. Wanneer het ultrasone pulssignaal naar een object wordt uitgezonden, wordt het door het object gereflecteerd en keert de echo terug naar de zender. Als u de door de ultrasone puls afgelegde tijd berekent, kunt u de afstand van het object vinden. In ons geval is het item het water.
Merk op dat wanneer u de afstand tot het water vindt, u het volume van de lege ruimte in de tank berekent. Om het watervolume te krijgen, moet u het berekende volume aftrekken van het totale tankvolume.
Stap 2: Sensor, voeding en controller
Hardware
Voor de sensor heb ik de JSN-SR04T waterdichte ultrasone sensor gebruikt. De werkroutine is als HC-SR04 (echo- en trig-pin).
Specificaties:
- Afstand: 25 cm tot 450 cm
- Werkspanning: DC 3.0-5.5V
- Werkstroom: <8mA
- Nauwkeurigheid: ±1cm
- Frequentie: 40khz
- Werktemperatuur: -20 ~ 70 ℃
Merk op dat deze controller enkele beperkingen heeft. bijvoorbeeld: 1- JSN-SR04T kan geen afstand meten onder 25 CM, dus u moet de sensor ten minste 25 CM boven het wateroppervlak installeren. Bovendien is de maximale afstandsmeting 4,5M. Deze sensor is dus niet geschikt voor grote tanks. 2- de nauwkeurigheid is 1 CM voor deze sensor. Dientengevolge, op basis van de diameter van de tank, kan de resolutie van het volume die het apparaat zal tonen, worden gevarieerd. 3- de snelheid van het geluid kan variëren op basis van de temperatuur. Als gevolg hiervan kan de nauwkeurigheid worden beïnvloed door verschillende regio's. Deze beperkingen waren echter niet cruciaal voor mij en de nauwkeurigheid was geschikt.
De controller
Ik gebruikte STM32F030K6T6 ARM Cortex M0 van STMicroelectronics. De specificatie van deze microcontroller vind je hier.
De voeding
Het eerste deel is om 220V/50Hz (Iran Electricity) om te zetten naar 12VDC. Voor dit doel heb ik de HLK-PM12 buck step-down voedingsmodule gebruikt. Deze AC/DC-converter kan 90 ~ 264 VAC omzetten naar 12VDC met een uitgangsstroom van 0,25 A.
Zoals u waarschijnlijk weet, kan de inductieve belasting van het relais verschillende problemen veroorzaken op het circuit en de voeding, en problemen met de voeding kunnen leiden tot instabiliteit, vooral in de microcontroller. De oplossing is om de voedingen te isoleren. Ook moet u een snubbercircuit gebruiken op relaiscontacten. Er zijn verschillende methoden om voedingen te isoleren. U kunt bijvoorbeeld een transformator met twee uitgangen gebruiken. Bovendien zijn er geïsoleerde DC/DC-converters in een klein formaat die de output van de input kunnen isoleren. Ik heb hiervoor MINMAX MA03-12S09 gebruikt. Het is een 3W DC/DC converter met isolatie.
Stap 3: De supervisor IC
Volgens TI App-opmerking: een spanningssupervisor (ook bekend als een reset-geïntegreerd circuit [IC]) is een type spanningsmonitor die de voeding van een systeem bewaakt. Spanningssupervisors worden vaak gebruikt bij processors, spanningsregelaars en sequencers - in het algemeen waar spannings- of stroomdetectie vereist is. Supervisors bewaken de spanningsrails om ervoor te zorgen dat ze worden ingeschakeld, detecteren fouten en communiceren met ingebouwde processors om de gezondheid van het systeem te waarborgen. je kunt deze app-notitie hier vinden. Hoewel STM32-microcontrollers ingebouwde supervisors hebben, zoals een voedingsmonitor, heb ik een externe supervisor-chip gebruikt om ervoor te zorgen dat alles goed werkt. In mijn geval gebruikte ik TL7705 van TI. U kunt de beschrijving van de Texas Instruments-website voor deze IC hieronder bekijken: De TL77xxA-familie van voedingsspanningssupervisors met geïntegreerde schakelingen is speciaal ontworpen voor gebruik als resetcontrollers in microcomputer- en microprocessorsystemen. De voedingsspanningssupervisor bewaakt de voeding op onderspanning bij de SENSE-ingang. Tijdens het opstarten wordt de RESET-uitgang actief (laag) wanneer VCC een waarde bereikt die de 3,6 V benadert. Op dit punt (ervan uitgaande dat SENSE hoger is dan VIT+), activeert de vertragingstimer een tijdvertraging, waarna de uitgangen RESET en RESET(NIET) inactief worden (respectievelijk hoog en laag). Wanneer zich tijdens normaal bedrijf een onderspanningsconditie voordoet, worden RESET en RESET(NOT) actief.
Stap 4: De printplaat (PCB)
Ik ontwierp de PCB in twee stukken. De eerste is de LCD-print die met lint/platte kabel op het moederbord wordt aangesloten. Het tweede deel is de controller-print. Op deze print heb ik voeding, microcontroller, ultrasone sensor en aanverwante componenten geplaatst. En ook het vermogensgedeelte dat het relais-, varistor- en snubbercircuit is. Zoals je waarschijnlijk weet, kunnen mechanische relais, zoals een relais dat ik in mijn circuit heb gebruikt, kapot gaan als ze altijd werken. Om dit probleem op te lossen, gebruikte ik normaal close contact (NC) van het relais. Dus in een normale situatie is het relais niet actief en normaal gesproken kan een nauw contact stroom naar de pomp geleiden. Telkens wanneer het water onder de lage limiet komt, wordt het relais ingeschakeld en wordt de stroom onderbroken. Dat gezegd hebbende, dit is de reden dat ik het snubbercircuit op NC- en COM-contacten heb gebruikt. Wat betreft het feit dat de pomp een hoog vermogen had, heb ik er het tweede 220 relais voor gebruikt, en ik drijf het aan met het relais op PCB.
U kunt hier PCB-bestanden zoals Altium PCB-bestanden en Gerber-bestanden downloaden van mijn GitHub.
Stap 5: Coderen
Ik heb de STM32Cube IDE gebruikt, een alles-in-één oplossing voor code-ontwikkeling van STMicroelectronics. Het is gebaseerd op Eclipse IDE met GCC ARM-compiler. Het heeft ook STM32CubeMX erin. U kunt hier meer informatie vinden. Eerst schreef ik een code met onze tankspecificatie (hoogte en diameter). Ik besloot het echter te wijzigen in GUI voor het instellen van parameters op basis van verschillende specificaties.
Stap 6: Installatie op tank
Uiteindelijk heb ik er een simpele doos voor gemaakt om de printplaat tegen water te beschermen. Ook heb ik een gat gemaakt aan de bovenkant van de tank om de sensor erop te plaatsen.