Auswahl eines Mikrocontrollers für ein batteriebetriebenes Datenerfassungsprojekt

17

Ich plane, den Wasserstand in einem ca. 10 m tiefen Brunnen mit einem maximalen Wasserstand von bis zu 5 m zu messen. Mein Plan ist es, mit dem Ultraschallsensor HC SR04 die Tiefe zu messen und über ZigBee an einen Himbeer-Pi in meinem Haus zu senden.

Wie in meiner vorherigen Frage erläutert , muss ich einen Mikrocontroller auswählen, um den Ultraschallsensor und das ZigBee-Modul miteinander zu verbinden.

Die Parameter für die Auswahl sind:

  1. Geringer Stromverbrauch: Ich plane, dies mit Batterie zu betreiben, daher ist ein geringer Stromverbrauch eine Priorität. Ab sofort habe ich kein Ziel für den Stromverbrauch oder die Tage zwischen den Batteriewechseln oder sogar die zu verwendende Batterie. Da dies eher ein Lernprojekt ist und sich in meinem Zuhause befindet, bin ich flexibel, aber ein geringerer Stromverbrauch ist besser.

  2. Niedrige Kosten: Dies ist ein Lernprojekt für mich, und ich möchte keine ungeheure Menge Geld dafür ausgeben, also sind niedrigere Kosten besser.

  3. Arbeiten in einem Brunnen: Das gesamte Projekt wird von einem Brunnen aus durchgeführt und ist starkem Sonnenlicht und Regen ausgesetzt. Ich werde aber einen guten Fall und Schutz bieten.

  4. Einfach zu programmieren.

Ich habe mich für ZigBee entschieden, da es einfach ist, meinen Anwendungsfall erfüllt und wenig Strom verbraucht. Meine Anforderung ist jedoch, die Sensordaten zu transportieren, und ich bin offen für andere Transporte. Die Entfernung von meinem Brunnen zu Raspberry Pi beträgt ungefähr 6 Meter mit einer Mauer dazwischen. Ich plane, die Wassertiefe alle 10 Minuten und zweimal pro Minute zu messen, wenn die Wasserpumpe läuft (ca. 20 Minuten täglich).

Raj
quelle
2
Das fühlt sich ziemlich weit gefasst an oder ist vielleicht nicht zum Thema geworden. Jede kleine MCU auf einem Board würde passen. Wenn Sie sich nicht für Zigbee entschieden hätten, würde ich vorschlagen, sich das BBC micro: bit mit integrierter BLE und einem Batterieanschluss anzusehen.
Sean Houlihane
2
Wenn Sie ein ZigBee-Radio wünschen, sollten Sie zumindest die Teile bewerten, die diese mit einer MCU-CPU (normalerweise ARM Cortex-M) kombinieren. Das bedeutet nicht, dass Sie diesen Weg gehen müssen, aber wenn Sie sich nicht dafür entscheiden, sollte dies einen guten Grund haben.
Chris Stratton
2
Was meinst du mit "in einem Brunnen"? Wird der Fall unter Wasser sein? Erwarten Sie kein Senden oder Empfangen von Xbee-Modulen unter Wasser. Viele arbeiten im 2,4-GHz-Band, das vom Wasser gut absorbiert wird. andere arbeiten mit 900 MHz, was wahrscheinlich auch nicht gut in Wasser eindringen kann. Wenn sich das Gehäuse nicht unter Wasser befindet, sollte eine Wand von 6 m + für xbees geeignet sein.
Jonas Schäfer
"In einem Brunnen" bedeutet, dass sich das Gerät im Brunnen befindet, jedoch über Wasser.
Raj

Antworten:

19

Ein allgemeiner Prozess zur Auswahl von Mikrocontrollern.

  1. Fassen Sie Ihre Anforderungen an den Mikrocontroller zusammen. Zum Beispiel in diesem Fall:

    • 1 Hardware-Timer zum Messen der Zeit zwischen Trigger- und Echoimpulsen.
    • 2 GPIO-Pins zur Verbindung von Sensor-Echo und Trigger-Pins.
    • Möglicherweise UART, um das HF-Kommunikationsmodul zu verbinden.
    • 1 ADC-Eingang zur Überwachung der Batteriespannung.


    Sie können mit einem 8-Pin-Controller auskommen, der möglicherweise auch die Verwendung der Programmer-Pins für allgemeine Zwecke erfordert.

  2. Entscheiden Sie, welche CPU-Leistung und welche Speicheranforderungen erforderlich sind . Reicht es aus, eine 8-Bit-MCU zu verwenden, oder benötigen Sie stattdessen eine 32-Bit-MCU? Welche CPU-Taktraten sind akzeptabel, Dutzende von MHz oder 1 MHz reichen aus? Wie viel Programmspeicher, RAM und ROM werden benötigt?

    Bei der beschriebenen Anwendung benötigen Sie keine hohe Rechenleistung. Wahrscheinlich wird ein 8-Bit-Controller ausreichen (obwohl er nicht viel billiger sein wird als ein 32-Bit-Controller, so dass Sie sich hier vielleicht nach dem Preis entscheiden können).

  3. Geringer Stromverbrauch . Wenn es nicht entscheidend ist, kommen Sie wahrscheinlich mit fast jeder Art von Steuerung aus, die ihren Stromsparmodus mit der niedrigsten Versorgungsspannung und Systemtaktfrequenz verwendet. Wenn es wichtiger ist, können Sie Ihre Suchliste eingrenzen, indem Sie mit dedizierten Low-Power-MCU-Kernen wie (ARM® Cortex®-M0- oder M0 + -CPU-Kernen) beginnen. In der Regel enthalten die Datenblätter Tabellen für die meisten Stromsparmodi / VCC / SysClk-Frequenzen . Bessere Tabellen listen auch den Verbrauch der einzelnen Peripheriegeräte auf.

  4. Entwicklertools . Ich betrachte es als einen sehr wichtigen Aspekt. Engagierte Hardware-Programmier-Tools können Vermögen kosten, daher halte ich mich normalerweise an MCUs, für die ich bereits Programmierer hatte. Wenn Sie zu einer anderen Familie oder Marke wechseln, empfiehlt es sich, in ein Entwicklungsboard mit integriertem Programmierer zu investieren, mit dem Sie später Ihre benutzerdefinierten Boards programmieren können. Überprüfen Sie im Allgemeinen immer zuerst, wie viel es kostet, Programme auf einen Mikrocontroller herunterzuladen.

Wie @Sean in den Kommentaren ausgeführt hat, besteht eine mögliche und kostengünstige Lösung darin, nach solchen HF-Modulen zu suchen, die mit einer integrierten, programmierbaren Anwendungs-MCU ausgestattet sind, mit der Ihre Firmware ausgeführt werden kann, während auch der HF-Kommunikationsteil behandelt wird. Solche Module gibt es für BLE, WiFi und ZigBee und möglicherweise für viele andere Technologien.

Darüber hinaus, wie eine MCU im Bohrloch überleben wird. Alles hängt von dem Gehäuse ab, das Sie für das Gerät bereitstellen. Zum Beispiel spielt es keine Rolle, für welche MCU Sie sich entscheiden, wenn das Gehäuse nicht 100% wasserdicht ist.


TL; DR; Hier kommt der produktspezifische Teil.

  1. Sie können den ATtiny25 wählen, der bei Farnell 0,87 $ / 1 Stück kostet . 8-Bit, 8-Pin, nimmt also nicht viel Platz in Anspruch. Im Power-Down-Modus verbraucht es bei deaktiviertem Watchdog 0,2 μA, bei aktiviertem Watchdog 3 V. 2-4 μA. Es ist Arduino-kompatibel, so dass die Programmierung nicht viel kostet (USBasp oder AVRdude-Programmierer kosten bei eBay etwa 2 $). ( Beachten Sie: Sie sollten die serielle Arduino-Software-Bibliothek verwenden, um ein HF-Kommunikationsmodul anzuschließen, da diese MCU nur über Hardware-SPI verfügt.) Alles in allem ist sie klein, billig und weist einen relativ geringen Stromverbrauch auf, der Bit-Banged-UART jedoch möglicherweise erschwert es allerdings. Es hat 2 kB Programmspeicher, der für Sie ausreichen sollte.

  2. Oder gehen Sie mit einem ARM Cortex M0, der im Standby-Modus 2 μA und im Stopp-Modus 5 μA verbraucht. Eine solche MCU ist beispielsweise STM32F030F4, die 1,09 $ / 1 Stück kostet . Es ist ein leistungsstärkerer 32-Bit-Controller mit einer maximalen Systemtaktfrequenz von 48 MHz, aber wie Sie sehen können, nur für +0,2 $. Es kommt mit 16 kB Programmspeicher, weit genug für diese einfache Aufgabe. Es verfügt über SPI, UART, I2C und viele andere Peripheriegeräte. Das Programmieren kostet mehr, der Programmierer kostet 20 $ bei Farnell. Meiner Meinung nach nicht wert. Stattdessen können Sie in ein Entwicklungsboard für die F0-Familie investieren, das über einen integrierten Programmierer (ST-LINK) verfügt . STM32F0Discovery Board kostet ~ 10 $. Sie können mit diesem Board mit dem Prototyping beginnen und es später als Programmierer verwenden.

Bence Kaulics
quelle
3
Beachten Sie, dass die ST-LINKs von Discovery- und Nucleo-Boards häufig für andere MCUs als die auf dem Board selbst verwendet werden können. Ich bin mir nicht sicher, ob es sich um ein bestimmtes Board handelt, aber es verwendet SWD und kann mithilfe der Jumper auf der rechten Seite getrennt werden. Das gute daran ist , dass die ST-LINK sind nicht nur Programmierer, sondern In-Circuit - Debugger , Lockerung Entwicklung eine Menge .
Jonas Schäfer
3
Wenn Sie sich nicht für die Antworten von XBEE interessieren, können Sie die Universal Serial Interface des ATtiny verwenden, um einen UART zu erhalten, der schneller ist als die Bit-Banged-Softwareimplementierung.
Jonas Schäfer
3
Es ist zu beachten, dass Funkmodule häufig mit einer nicht dedizierten MCU-Ressource ausgestattet sind (und Module zur Vereinfachung der Typgenehmigung vorhanden sind). Die CPU wird normalerweise mit dem RF-Stack geteilt, daher müssen Sie regelmäßige Interrupts usw. akzeptieren.
Sean Houlihane
3
ULPBENCH ist eine gute Ressource, wenn Betrieb mit geringem Stromverbrauch (Batterie) wichtig ist.
Neonzeon
5

Mit Blick auf einfache Programmierung und niedrige Kosten würde ich wahrscheinlich mit einer Art Arduino-Modul (oder einem kostengünstigen Klon) beginnen. Code für Ihren Ultraschallsensor ist bereits vorhanden, ebenso wie Beispielcode für ZigBee, beispielsweise mit den Digi XBee-Modulen. Bei letzterem schließen Sie den XBee an eine serielle Schnittstelle an, und nachdem Sie die Verbindung mit der ehrwürdigen alten "AT" -Befehlsschnittstelle hergestellt haben, verfügen Sie über einen Punkt-zu-Punkt-Kanal, über den Sie beliebigen Text senden können (an Ihren Raspberry Pi) ). ZigBee ist nicht die billigste Art der Nahbereichskommunikation, aber die XBee-Module sind in den letzten 5 Jahren real im Preis gefallen.

Ich weiß, dass einige Leute ein Problem mit der C / C ++ - basierten Sprache haben, die auf Arduino verwendet wird, aber in diesem Fall würden Sie größtenteils bereits vorhandene Skripte anderer Benutzer zusammenführen.

Wenn Sie nach "Arduino-Schlafmodus" googeln, finden Sie Beispiele dafür, wie Sie den Arduino in den Energiesparmodus versetzen und sporadisch aufwachen, um eine Messung vorzunehmen, sie zu kommunizieren und dann wieder in den Schlafmodus zu wechseln.

TheMagicCow
quelle
1
Während mit einem ATmega-Chip eine gute Energieverwaltung möglich ist, weist ein typisches Arduino- Board parasitäre Energieverluste auf, die die Batterielebensdauer stark einschränken.
Chris Stratton