3.0 Volt - 3.3 Volt Bauteile an Arduino Uno

Ich habe hier zwei Bauteile welche nur mit einer Betriebsspannung von 3.0 bis 3.3 Volt betrieben werden dürfen. Kann ich diese Elemente ohne Probleme an den 3.3 V Anschluss an meinem Board hängen? Bekomme ich Probleme, wenn ich diese Bauteile über die Digital/Analog Pin's ansteuere?

Ah und noch eine zweite Frage, ich habe einen Sensor, der mit einer Spannung von 3.0 bis 5.5 Volt betrieben werden kann, wenn ich dieses Bauteil mit 3.3 Volt betreibe, bedeutet es doch auch, dass der Sensor länger über Batterie betrieben werden kann, als wenn ich diesen an 5 Volt klemme, oder liege ich da falsch?

Bauteile über den 3.3V Ausgang des Arduino zu betreiben ist kein Problem. Bei den IO-Pins hängt es davon ab, ob Du z.B. nur Lesen willst, der Arduino also nur Eingang ist. ein 3.3V HIGH Signal wird auch vom 5V TTL-Pegel des Arduino sicher als HIGH erkannt. Willst Du die Arduino Pins als Ausgang und damit als Eingang deines 3.3V Bauteils betreiben, mußt Du aufpassen. Es gibt Bauteile die mit 3.3V betrieben werden, aber 5V tolerant sind, das sollte im Datenblatt stehen. Auf Nummer Sicher gehst Du, wenn Du einen Pegelwandler verwendest, oder im einfachsten Fall einen Spannungsteiler mit 2 Widerständen, die das Ausgangssignal des Arduino auf 3.3V bringen. Schau Dir mal die verschiedenen Beschaltungsbeispiele für SD-Karten an, da wird das häufig so gemacht. Mario.

Hallo,

wenn die 3 - 3,3 V die Betriebsspannung ist und keine Signalspannung kannst du das Bauteil sowohl an dem 3,3V Abgriff des Arduinos anschließen als auch an einem I/O Port. Du musst nur darauf achten den Port nicht mit High "anzuschalten" sondern über PWM auf effektive 3,3V einstellen. Z.B so : analogWrite(10,167); Ich habe schon öfters Bauteile so betrieben allerdings waren die nicht besonders empfindlich. Vielleicht wartest du lieber erst auf Antworten zu meinem Post.

Gruß, Tobi

[EDIT] Hab diese Aussage durchgestrichen da unzutreffend und sie zu Schäden an den Bauteilen Führen kann Uwe Federer, Moderator[/EDIT

BigInteger: Ah und noch eine zweite Frage, ich habe einen Sensor, der mit einer Spannung von 3.0 bis 5.5 Volt betrieben werden kann, wenn ich dieses Bauteil mit 3.3 Volt betreibe, bedeutet es doch auch, dass der Sensor länger über Batterie betrieben werden kann, als wenn ich diesen an 5 Volt klemme, oder liege ich da falsch?

Der DS18B20 hat eine Betriebsspannung von 3,0 bis 5,5V. Die Stromaufnahme ist bei diesem Bauteil aber nicht linear der Spannung. Es ist ein "aktives Bauteil" und verhält sich nicht wie ein Passives wie z.B. ein Widerstand.

Bzgl. der Pegelwandler bzw. Spannungsteiler schließe ich mich MKL an.

Tobias93: ...als auch an einem I/O Port. Du musst nur darauf achten den Port nicht mit High "anzuschalten" sondern über PWM auf effektive 3,3V einstellen. Z.B so :

analogWrite(10,167);

Ich habe schon öfters Bauteile so betrieben allerdings waren die nicht besonders empfindlich. Vielleicht wartest du lieber erst auf Antworten zu meinem Post. ...

So ein grober Unfug ist nicht zu empfehlen! Gleich vergessen!

Du kannst den Arduino Ausgang zerstören oder das Bauteil dahinter etc...

Hey,

Danke für die warnende Info. Kannst du bitte schreiben wieso, ich hab das wie gesagt schon öfter gemacht und möchte in Zukunft da dann nichts mehr falsch machen.

Gruß, Tobi

Aus dem Ausgang kommen 5V Impulse. Diese liegen über der Spezifikation. Wenn das Bauteil einen "Kurzen" aufgrund der zu hohen Spannung von 5V verursacht oder die Stromaufnahme zu hoch wird, stirbt dein Ausgang gleich mit.

Du kannst den Arduino Ausgang zerstören oder das Bauteil dahinter etc...

BigInteger: Ich habe hier zwei Bauteile welche nur mit einer Betriebsspannung von 3.0 bis 3.3 Volt betrieben werden dürfen. Kann ich diese Elemente ohne Probleme an den 3.3 V Anschluss an meinem Board hängen?

Ja, bis zur maximalen Stromabgabe des Arduino-Spannungsreglers (z.B. Uno: max. 50 mA).

BigInteger: Bekomme ich Probleme, wenn ich diese Bauteile über die Digital/Analog Pin's ansteuere?

Das kommt auf das konkrete Bauteil an. Es gibt 3.3V Bauteile mit TTL-5V-festen Eingängen, die kannst Du problemlos direkt mit 5V Logikpegeln ansteuern. Und es gibt Bauteile, die das nicht abkönnen und die Du nur mit entsprechenden 5/3.3V-Pegelwandlern betreiben darfst.

BigInteger: Ah und noch eine zweite Frage, ich habe einen Sensor, der mit einer Spannung von 3.0 bis 5.5 Volt betrieben werden kann, wenn ich dieses Bauteil mit 3.3 Volt betreibe, bedeutet es doch auch, dass der Sensor länger über Batterie betrieben werden kann, als wenn ich diesen an 5 Volt klemme, oder liege ich da falsch?

Das ist sehr gut möglich. Konkretes über die Stromaufnahme sollte Dir das Datenblatt ("datasheet") des Bauteils verraten.

Gegendarstellungen:

Beim Arduino 2009 und allen anderen Arduino's mit FT232 USB-Serial Adapter liegt der maximale Strom am 3,3V in bei ca 50mA. Der Spannungsstabilisator ist im FT232 integriert. Beim Arduino UNO und alle anderen Arduino's mit dem ATmega8U2 bzw 16U2 oder dem ATmega32U4 ist ein Spanungsstabilisator zB der LP2985-33DBVR vorhanden der bis zu 150mA liefern kann.

Normalerweise ist die maximale Spannung die an einem Eingang anliegen darf 0,5 bis 0,7V über der Versorgungsspannung. Dies weil an den Eingängen Schutzdioden gegen statische Entladungen integriert sind und diese bei 0,5V bis 0,7V anfangen zu leiten und durch den resultierenden Strom zerstört werden. Dies gilt auch bei ICs die von 3,3V bis 5V betrieben werden können und mit 3,3V versorgt werden. Es gibt wenige Ausnahmen bei denen ein Eingang eine höhere Spannung tolleriert als die Versorgungsspannung. Beispiele sind der Reseteingang bei den ATmega, welcher 12V zum HV Programmierung tolleriert, EPROMs, welche eine höhere Programmiespannung brauchen, manche I2C ICs die 5V an SCL bzw SDA tollerieren. Dies MUß immer im Datenblatt kontrolliert werden.

Eine niedrigere Versorgungspannung kann zu einem geringeren Stromverbrauch führen. Dazu muß dann aber die gesamte Schaltung in 3,3V realisiert werden. Eine größere Stromersparnis hat man aber wenn man eine Schaltung auf stromsparen trimmt. Geringere Taktfrequenz, höhere Pullup/down Widerstände, LED weglassen oder Superhelle nehmen und mit wenig Strom betreiben, Hintergrundbeleuchtung von LCD abschalten oder grün-schwarze Displays nehmen die ohne Hintergrundbeleuchtung lesbar sind, ICs in Standby bzw Sleep-Modus schicken, DC Wandler statt Spannungsstabilisatoren verwenden, stromsparende Vergleichstypen verwenden zB bei Operationsverstärkern.

Viele Grüße Uwe

Okay, gut, dass ich gefragt habe, sonst hätte ich glaub mein Bauteil mit samt dem Arduino geschrotet.

Hier die (wichtigen) Daten aus dem Datenblatt: Fastrax UP501 key features Low power consumption: 75mW @ 3.0V Configurable fix rate, up to 10Hz Ultra High Sensitivity: –148dBm (Cold Start Acquisition) –165 dBm (Navigation) Tiny form factor – 22mm x 22mm x 8mm Embedded patch antenna 18.4 x 18.4 x 4.2 mm NMEA protocols (default speed: 9600bps) One serial port (default: CMOS level, option: RS232) 1PPS output A-GPS with 14-day extended ephemeris WAAS/EGNOS support MediaTek MT3329, 66-channel receiver Optional Internal back-up battery

wobei es ja hauptsächlich um die 75mW @ 3.0V geht. Im ausführlichen Datenblatt stehet dann noch weiter, dass VDD von 3.0 bis 4.2 gehen darf, das ist ja dann kein Problem, wenn ich es an den 3.3 Volt Anschluss des Arduinos hänge. Mehr sorgen bereitet mir jetzt die 75mW, da das Ardoino Uno ja nur 50mW liefert, oder?

Der Arduino Uno liefert bis zu 150mA. Grüße Uwe

115mW im Suchbetrieb = ~40mA.

Alle Signale die zum Modul gehen über Spannungsteiler auf 3,3V hinpegeln.
Die SIgnale vom Modul können direkt, ohne Pegeländerung, in den Arduino. Dabei würde ich aber imm einen Widerstand von ca. 1k dazwischen hängen, nur zur Sicherheit.

BigInteger: wobei es ja hauptsächlich um die 75mW @ 3.0V geht. Im ausführlichen Datenblatt stehet dann noch weiter, dass VDD von 3.0 bis 4.2 gehen darf, das ist ja dann kein Problem, wenn ich es an den 3.3 Volt Anschluss des Arduinos hänge. Mehr sorgen bereitet mir jetzt die 75mW, da das Ardoino Uno ja nur 50mW liefert, oder?

mA = Milliampere mW = Milliwatt

P = U*I ==> I = P/U = 0,075 W / 3.3V = 0,023 A = 23 mA

One serial port (default: CMOS level ==> CMOS-TTL-Level ist 5V

D.h. Du kannst die 23 mA aus dem 3.3V Anschluss am Arduino ziehen und Du kannst das Modul über 5V-Logikpegel ansteuern. Alles im grünen Bereich.

Mardetuino: 115mW im Suchbetrieb = ~40mA.

Wäre ja immer noch im grünen Bereich. Aber irgendwie hätte der OP dann das Datenblatt nicht korrekt gelesen, wenn er nicht den maximalen Leistungsbedarf des Moduls gepostet hätte, sondern irgendeinen geringeren Leistungsbedarf, der nicht in allen Betriebszuständen zutrifft.

One serial port (default: CMOS level ==> CMOS-TTL-Level ist 5V

Jurs das sehe ich nicht so. TTl level sind klar definiert da TTL mit 5V betrieben werden. CMOS zb der 4000 Serie aber zwischen 3 und 18V. CMOS-Level und TTL-Level würde ich nicht gleichsetzen. Im Datenblatt des GPS Moduls müßte es stehen. Grüße Uwe

http://www.anglia.com/fastrax/datasheets/UP501.pdf: Main power supply VDD current varies according to the processor load and satellite acquisition. Typically VDD peak current is up to 40mA during Search mode. In Low Power Tracking mode the average VDD current is typically below 25 mA for the Fastrax UP501 and UP501B modules, and below 28 mA for Fastrax UP501R module with default baud rate of 9600 baud.

Ist CMOS Level Dig.0 nicht mit 0V bis VDD/2 definiert? Dig.1 mit VDD/2 bis VDD?

Jetzt hab ichs im Datenblatt gefunden:

http://www.anglia.com/fastrax/datasheets/UP501.pdf: CMOS I/O signal levels (3) VIL: -0.3V…0.8V, VIH: 2.0V…3.6V, VOL:-0.3V…0.4V, VOH: 2.4V…3.2V Note (3): Fastrax UP501R UART signals are RS232 compatible.

Bleiben wir also bei den Spannungswandlern auf 3,3V für die serielle Geschichte...

Ah und noch eine zweite Frage, ich habe einen Sensor, der mit einer Spannung von 3.0 bis 5.5 Volt betrieben werden kann, wenn ich dieses Bauteil mit 3.3 Volt betreibe, bedeutet es doch auch, dass der Sensor länger über Batterie betrieben werden kann, als wenn ich diesen an 5 Volt klemme, oder liege ich da falsch?

Seite 9, http://www.anglia.com/fastrax/datasheets/UP501.pdf 2.2 Absolute maximum ratings Table 3 Absolute maximum ratings ... Input voltage on any input connection -0.3 +3.6 V

Ah und noch eine zweite Frage, ich habe einen Sensor, der mit einer Spannung von 3.0 bis 5.5 Volt betrieben werden kann, wenn ich dieses Bauteil mit 3.3 Volt betreibe, bedeutet es doch auch, dass der Sensor länger über Batterie betrieben werden kann, als wenn ich diesen an 5 Volt klemme, oder liege ich da falsch?

Ich glaube Du überschätzt die Stromersparnis. Welcher Sensor ist das? Grüße Uwe

Mardetuino: Bleiben wir also bei den Spannungswandlern auf 3,3V für die serielle Geschichte...

Musst Du das Modul überhaupt über die serielle Schnittstelle umkonfigurieren? Normalerweise haut es doch auch in Standardkonfiguration seine Daten raus, reicht Dir das nicht?

Laut Datenblatt:

1.1 Default firmware configuration
Fastrax UP501 default firmware configuration:
1. Port 0: NMEA 9600 baud
2. NMEA output: GGA, RMC, GSV, GSA (all 1 sec interval)
3. DGPS/SBAS: Disabled (Module supports WAAS/EGNOS)
4. Datum: WGS84

Vielleicht passt das ja?

Dann bräuchtest Du ja nur den Ausgang (TX) des UP501 mit dem Eingang (RX) des Arduino verbinden und er kann problemlos seine Daten am Arduino loswerden.

Und den problematischen Pin als Eingang (RX) des UP501 lässt Du genau so unbeschaltet wie den Sendepin (TX) des Arduino.

Dann kannst Du Deine Daten vom UP501 empfangen (mit etwas zu niedrigem Pegel, die der Arduino aber trotzdem erkennen kann), Du kannst das Modul dann nur nicht von der Werkseinstellung umkonfigurieren.

Wow, cool vielen Dank für die ganzen Informationen und die Hilfsbereitschaft!

Was ich jetzt noch nicht so ganz verstanden haben ist die Aussage von Mardetuino:
Dabei würde ich aber imm einen Widerstand von ca. 1k dazwischen hängen, nur zur Sicherheit.
Warum einen Wiederstand dazwischen hängen?

Meinen Aufbau für das GPS Modul würde ich dann wie folgt realisieren:
Pin 1 ziehe ich auf GND,
Pin 2 schliesse ich an einen digital I/O des Arduinos,
Pin 3 ziehe ich auch GND,
Pin 4 und 5 schliesse ich an die 3.3 Volt des Arduinos an.

diesen Hinweis hat mir der Verkäufer noch zukommen lassen:

The only thing you’ll need to watch for is that the module is designed to run at about 3.3V, and shouldn’t be powered by 5.0V. If you’re using an Arduino, simply connect the GPS power pin to the 3.3V pin. If you want to configure the module, you’ll want to put a 10K resistor divider on the RX pin so you don’t put 5V on the data pin. We include these resistors, as well as a 6 pin header you can solder to the module in order to plug it into a breadboard.

Ich weis nur nicht was er mit den Wiedertänden und dem Konfigurieren meint. :frowning: Falls jemand eine Idee hat, wäre ich dankbar

Hier ist noch der Code:

// Test code for Adafruit GPS modules using MTK driver
// such as www.adafruit.com/products/660
// Pick one up today at the Adafruit electronics shop
// and help support open source hardware & software! -ada

#if (ARDUINO >= 100)
#include <SoftSerial.h>
SoftSerial mySerial(2, 3);
#else
// If you’re using Arduino IDE v23 or earlier, you’ll
// need to install NewSoftSerial
#include <NewSoftSerial.h>
NewSoftSerial mySerial(2, 3);
#endif

// Connect the GPS Power pin to 3.3V
// Connect the GPS Ground pin to ground
// Connect the GPS VBAT pin to 3.3V if no battery is used
// Connect the GPS TX (transmit) pin to Digital 2
// Connect the GPS RX (receive) pin to Digital 3
// For 3.3V only modules such as the UP501, connect a 10K
// resistor between digital 3 and GPS RX and a 10K resistor
// from GPS RX to ground.

// different commands to set the update rate from once a second (1 Hz) to 10 times a second (10Hz)
#define PMTK_SET_NMEA_UPDATE_1HZ “$PMTK220,10001F"
#define PMTK_SET_NMEA_UPDATE_5HZ "$PMTK220,200
2C”
#define PMTK_SET_NMEA_UPDATE_10HZ “$PMTK220,100*2F”

// turn on only the second sentence (GPRMC)
#define PMTK_SET_NMEA_OUTPUT_RMCONLY “$PMTK314,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,029"
// turn on ALL THE DATA
#define PMTK_SET_NMEA_OUTPUT_ALLDATA "$PMTK314,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0
28”

// to generate your own sentences, check out the MTK command datasheet and use a checksum calculator
// such as the awesome NMEA MTK checksum calculator

void setup()
{
Serial.begin(57600);
Serial.println(“Adafruit MTK3329 NMEA test!”);

// 9600 NMEA is the default baud rate
mySerial.begin(9600);

// uncomment this line to turn on only the “minimum recommended” data for high update rates!
//mySerial.println(PMTK_SET_NMEA_OUTPUT_RMCONLY);

// uncomment this line to turn on all the available data - for 9600 baud you’ll want 1 Hz rate
mySerial.println(PMTK_SET_NMEA_OUTPUT_ALLDATA);

// Set the update rate
// 1 Hz update rate
mySerial.println(PMTK_SET_NMEA_UPDATE_1HZ);
// 5 Hz update rate- for 9600 baud you’ll have to set the output to RMC only (see above)
//mySerial.println(PMTK_SET_NMEA_UPDATE_5HZ);
// 10 Hz update rate - for 9600 baud you’ll have to set the output to RMC only (see above)
//mySerial.println(PMTK_SET_NMEA_UPDATE_10HZ);

}

void loop() // run over and over again
{

if (mySerial.available()) {
Serial.print((char)mySerial.read());
}
if (Serial.available()) {
mySerial.print((char)Serial.read());
}
}

BigInteger: Ich weis nur nicht was er mit den Wiedertänden und dem Konfigurieren meint. :-( Falls jemand eine Idee hat, wäre ich dankbar

Das ist doch im von Dir geposteten Code genau erklärt:

// For 3.3V only modules such as the UP501, connect a 10K // resistor between digital 3 and GPS RX and a 10K resistor // from GPS RX to ground.

Zwischen Digital 3 und Ground installierst Du 2*10K Widerstände in Reihenschaltung, und am Mittelabgriff des so gebildeten Spannungsteilers zweigst Du zu GPS RX ab (wo dann nur die halbe Spannung statt der vollen 5V vom Arduino-Pin ankommt).