Hallo, ich möchte eine Bestätigung erhalten, dass das, was ich tue, meinen Arduino Mega nicht braten wird.
Die Skizze, die ich verwende, um einen Impuls an Pin 8 an einen 2n3055 zu senden, der 12 Volt schaltet, lautet wie folgt:
int pulse = 8;
int sensorValue;
void setup() {
pinMode(pulse, OUTPUT);
}
void loop() {
int sensorValue = analogRead(A0);
map(sensorValue, 0, 1023, 1, 2000);
digitalWrite(pulse, HIGH);
delay(sensorValue);
digitalWrite(pulse, LOW);
delay(sensorValue);
}
Ich verwende ein Potentiometer zwischen dem Arduino 5v und Masse, wobei der Wischer auf Pin A0 geht.
Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan
Ich möchte es wissen:
könnte ich dies direkt von meinem USB mit Strom versorgen, anstatt den Transistor UND das Arduino von der Quellbatterie mit Strom zu versorgen.
Wenn sie beide von der Batterie gespeist werden müssen, muss ich den Emitter an die Masse des Arduino UND die Batterie anschließen, um zu verhindern, dass der gesamte Strom durch die Arduino-Masse fließt und einen sauberen Impuls erhält, oder muss ich nur den Emitter anschließen an die Batterie negativ und das Signal wird OK sein.
In welcher Konfiguration auch immer, wo ist der beste Ort, um ein analoges Messgerät mit einer Nennleistung von bis zu 3 Ampere anzubringen, damit ich den Gesamtstromverbrauch der Platine und der Transistorschaltung sehen kann.
Zuletzt verwende ich dies, um die Hochspannungsseitenspule in einem Mikrowellentransformator zu pulsieren, sodass sie eine hohe Impedanz hat und beim Pulsen maximal 300 mA zieht, sodass ich den Arduino über USB und den Transistor von der Batterie mit Strom versorgen kann, damit ich kann im Handumdrehen umprogrammieren und einen eingestellten Puls haben, anstatt den Topf zu verwenden. (wie beim Schreiben des Codes für eine bestimmte Verzögerung und Hochladen während der Ausführung)
int sensorValue = 1;
Warum initialisieren Sie diese Variable auf 1, wenn sie dann in der ersten Zeile von überschrieben wird loop()
?
Verzögerung (Sensorwert);
Ist es beabsichtigt, eine unterschiedliche Verzögerung von n Millisekunden zu haben , wobei n der Wert ist, der jedes Mal von Port A0 gelesen wird? Ist diese Verzögerung auch zweimal erforderlich, einmal nach dem Setzen des Ausgangspins auf High, einmal nach dem Setzen auf Low?
Sie benötigen einen Basiswiderstand zwischen pulse
(Pin 8) und der Basis des 2n3055, dessen Wert davon abhängt, wie viel Strom Sie durch den Kollektor zulassen möchten. Wenn Sie den Transistor als Schalter verwenden, wird ein Minimum von etwa 220 Ohm empfohlen, um den Strom vom pulse
Pin unter etwa 25 mA zu halten, deutlich innerhalb der sicheren Grenzen für jeden Pin: Das absolute Maximum für jeden Pin ist auf 40 mA ausgelegt .
1) Es hängt von der Stromaufnahme ab. USB hat eine PTC-Sicherung, die auf 500 mA eingestellt ist. Wenn Ihre Last das nicht überschreitet, dann ist es in Ordnung.
2) Strom findet den Weg des geringsten Widerstands, also ist das in Ordnung. Ich würde einen Optoisolator verwenden, um die beiden Geräte zu trennen. Immer wenn Sie eine große Stromlast schalten, wird viel Rauschen in Ihr System induziert.
3) Unterbrechen Sie einfach den Stromkreis, um den Stromverbrauch zu messen. Ziemlich genau zwischen Pluspol der Batterie und Last.
4) Ich würde empfehlen, auf einen MOSFET umzusteigen, anstatt den NPN-Transistor zu verwenden. Wenn Sie die Verlustleistungsberechnung für die beiden Geräte durchführen, ist dies sehr sinnvoll: MOSFET: P = (I ^ 2) (Ron) = (300 mA ^ 2) * (mOhm) => wenig Wärme NPN: P = ( I*U) = (300mA)*(0,7V) = 0,21W
Sie möchten PWM nicht verwenden, da analogWrite() auf 490 Hz festgelegt ist.
pjc50
Anindo Ghosh
Engelgroß
Jippie
analogWrite( pulse , dutyCycle );
, wodutyCycle = ( 255 * sensorValue ) / 1024;
.Bradley
Kurt E. Tuchmacher
Anindo Ghosh
Bradley