attiny861, hc-sr04 sensor en NPN transistor om 'm uit te zetten

Hoi,

Ik wil stroom te besparen in een circuit waarbij een HC-SR04 ultrasonic sensor aangesloten zit op een Attiny861 uc. Ik probeer dit te bereiken door de sensor helemaal uit te schakelen wanneer deze niet in gebruik is.

Ik heb dit gedaan door een NPN transistor te plaatsen op de low-side van de sensor (tussen GND pin en GND) - zie bijlage voor dit gedeelte van het schema. (Ik gebruik een Nexperia MMBT3904,215).

Zodra ik dit doe, zie ik echter dat er alsnog 2.4mA stroom loopt, terwijl de NPN base low is (ik meet op de +5V pin van de sensor). Nu ben ik er achter gekomen dat er stroom wegloopt via de trigger pin op de sensor. Deze zit aangesloten op de Attiny welke mode output heeft en low staat, dus deze sinked stroom.

Zodra ik de trigger pin los haal, dan zie ik dat er nog maar 0.003uA loopt. Dus de NPN werkt. Ik zie dezelfde lage stroom over de +5V naar de sensor lopen zodra ik de trigger op high zet. Maar dat is geen oplossing.

Kunnen jullie mij iets aanraden hiervoor ? Ik zat te denken om ipv NPN een PNP te doen op de high-side. Maar dat wordt dan misschien weer lastig om high te houden zodra ik de Attiny in sleep mode wil brengen ? (geen idee, moet dat gedeelte nog doen).

Ik zat ook te denken om een diode te plaatsen tussen uc en trigger pin zodat er geen stroom terug kan lopen ? (met aanname dat de hc-sr04 zelf al een pulldown heeft naar zijn gnd ? zo niet kan ik dat zelf doen naar de gnd die ik in en uit kan schakelen) Is dat iets ?

Of zou het in software op te lossen zijn ? ik gebruik AVR-Libc, is het niet mogelijk om bij high wel +5v te geven en bij low te laten floaten ? (ik zie in de datasheet voor de uc dat bij oputput (sectie 10.1.3, pag 57) dat bij mode output niks ingesteld kan worden wat dat betreft (PUD in MCUCR).

(update paar minuten later: ik zie nu dat als ik de pin op DDR input PORT 0 zet, dan is'ie tri-state, dus floating (?) dan zie meet ik ook de lage stroom.. Maar is dat de oplossing dan ? De hele tijd switchen tussen DDR input en output?)

Ik hoop dat iemand me wat verder kan helpen!

Alvast bedankt,

Leon

HC-SR04 : Die trekt 15 mA. Die zou ik direct voeden uit een I/O pin. Geen transistor nodig. Pin Hoog = voeding aan. Pin laag = voeding uit.

Bij uitschakelen moet je ook de stuurlijnen laag zetten. Anders gaan die als alternatieve voeding werken.

Schakelen in de min is meestal niet handig. Want dan gaan alle control lijnen naar de plus.

In sleep mode van de CPU blijven de I/O pinnen aktief. Dus die blijven gewoon hoog/laag zoals je ze zet voordat je in sleep mode gaat. Dat kost geen power zolang de pinnen niet belast worden.

Bij bijna alle electronica chips zitten er altijd dioden ingebouwd tussen de data pinnen en de voeding. Die helpen om de chip te beschermen tegen statische electriciteit, en zijn ook een gevolg van het produktie proces van de chips. Normaal heb je daar geen last van, zolang de data pinnen binnen het voedings-bereik blijven, maar als je de massa uitschakelt dan gaat een lage trigger-pin inderdaad als alternatieve massa fungeren via zo een ingebouwde diode.

Je kun ook de Tiny861 (net als elke andere processor) voeden via een I/O pin ipv Vcc als je zou willen, maar erg verstandig is dat niet. Soms gebeurt dat per ongeluk, als de VCC slecht is gesoldeerd, of als die is uitgeschakeld terwijl de I/O nog hoog zijn.

Zie datasheet :

Hoi deKees,

Dankje voor je antwoord! He, had dat direct voeden vanuit gpio ook ergens gelezen, maar daar stonden weer wat reacties bij dat dat niet goed zou zijn. Maar idd, less is more, en het is idd ver onder de 40mA die ik mag trekken.

Top, ga ik dat doen :)

nogmaals bedankt, ook voor de verdere info!