Warum haben einige Stifte "~" Zeichen neben ihren Nummern?

32

Ich war an meinem Arduino Uno suchen , und ich bemerkte , dass das Symbol von digitalen Stiften 11, 10, 9, 6, 5, und 3. Was bedeuten diese? Beeinflusst dies die Funktionsweise? Kann ich diese Pins in bestimmten Situationen nicht verwenden?

Anonymer Pinguin
quelle
19
Das Tildesymbol bedeutet "ungefähr". Wie in "Dies ist ungefähr Pin 11". Während des Herstellungsprozesses können sich die Stifte etwas verschieben. In den seltensten Fällen ist Pin 11 genau 11. Normalerweise sind es etwas mehr oder etwas weniger als 11. Pins mit einer erhöhten Neigung zur Verschiebung werden mit dem Symbol ~ gekennzeichnet. :)
6
@AnnonomusPerson David ist scherzhaft, was nicht sofort offensichtlich ist, wenn Sie mit Stecknadeln und dergleichen nicht vertraut sind.
Shamtam
7
@ Shamtam: Oder wenn Sie mit David nicht vertraut sind :)
Chris Laplante

Antworten:

31

Entspannen Sie Sich. Mach dir keine Sorgen. Diese Stifte heißen PWMund sind die gleichen wie die anderen Stifte, mit der Ausnahme, dass sie einen "zusätzlichen Bonus" haben.


Einige Verwendungen von Arduinos Website :

  • LED dimmen
  • Simuliert einen analogen Ausgang. Der Ausgang wechselt weiterhin digital von 0V auf 5V. Tiefpassfilter (Kondensator und Widerstand) simulieren jedoch analoge Spannungen.
  • Audiosignale generieren.
  • Bereitstellung einer variablen Drehzahlregelung für Motoren.
  • Erzeugen eines modulierten Signals, um beispielsweise eine Infrarot-LED für eine Fernbedienung anzusteuern.

Wie es funktioniert:

Die PWM-Pins werden von On-Chip-Timern gesteuert, die die Pins automatisch mit einer Rate von ca. 490 Hz umschalten. Die "Pulse Width Modulation" (PWM) gibt an, wie lange der Pin für einen einzelnen Zyklus dieser Frequenz ein- oder ausgeschaltet bleibt. Dies kann eine LED dimmen, indem die Illusion erzeugt wird, dass sie mit der halben Helligkeit wie zuvor ist, wo sie wirklich sehr schnell blinkt. Bild von verschiedenen Arbeitszyklen.

Wenn ein Arbeitszyklus von 25% vorliegt, ist er auf ein Viertel der Zeit begrenzt. Wenn Sie für eine LED verwendet haben, würde sie etwa 1/4 so hell erscheinen [Geben oder Nehmen]. (Hinweis: Wie einige Leute betonten, ist dies nicht wirklich proportional, aber lassen Sie es uns der Einfachheit halber so. EX: 25% ist nicht immer 1/4 der Helligkeit.)

(Wenn Sie sich mit Elektrotechnik auskennen, können Sie wahrscheinlich einen Kondensator hinzufügen, um ihn auch als Analogausgang zu nutzen.)


So verwenden Sie diese Pins für die Ausgabe:

Zuerst müssen Sie den Pin als Ausgang definieren. Dann verwenden Sie analogWrite(ledPin, 128); , um es zu starten. Das ledPinist der PWM - Pin , die Sie wollen PWM beginnen und 128sollte zwischen mit einer Reihe ersetzt werden 0und 255; 0: 0% duty cycle(Dreht sich vollständig vom pin) und 255: 100% duty cycle. (Schaltet den Stift vollständig ein)

Quelle: http://www.arduino-tutorials.com/arduino-pwm/


Warum kann ich das Licht in meinem Code nicht einfach so schnell ein- und ausschalten ?:

Technisch kann es jedoch einige Probleme geben:

  • Sie ist möglicherweise nicht so präzise wie die Verwendung der festverdrahteten Schaltungen mit dem Arduino
  • Es ist einfacher, Anweisungen einzugeben, als viele "if" -Anweisungen zu haben

Es wird nicht wirklich einen großen Unterschied machen, wenn der einzige Zweck des Arduino darin besteht, PWM-Signale zu erzeugen. Wenn Sie jedoch Verzögerungen von mehr als 50 MS in die Hauptschleife einfügen, wird das Timing durcheinander gebracht. Mit dem Software-Ansatz möchten Sie alle "Verzögerungs" -Funktionen eliminieren, da der Arduino nur auf einem Thread ausgeführt wird (er kann nur eine Sache gleichzeitig ausführen). Wenn Sie wissen, was Sie tun, wird es keinen großen Unterschied machen, das Licht zu dimmen, aber wenn Sie einen zusätzlichen Stift mit PWM haben, verschwenden Sie nur Ihre Zeit mit einem Software-Ansatz.


Wie andere darauf hingewiesen haben:

Sie benötigen noch einen Widerstand für Ihre Schaltkreise, um Strom und Spannung zu begrenzen. Sie können dies nicht überspringen.

Anonymer Pinguin
quelle
1
Ich habe keine Ahnung, was Sie unter "Rechenleistung" verstehen (oder was auch immer dieser Ausdruck bedeuten soll). PWM funktioniert, weil es von den Timern ausgelöst wird, die unabhängig vom laufenden Code laufen.
Baldengineer
@ JamesC4S Ich meine, dass der Gesamtcode langsamer wird, wenn Sie die Verzögerung hinzufügen und "Ein" und "Aus" wählen. Der Prozessor kann nur so viele Vorgänge pro Sekunde ausführen, bevor er überhitzt, sodass er die Geschwindigkeit steuert.
Anonym Penguin
@AnnonomusPerson Sie müssen Ihre Antworten klarer formulieren. Ich verstehe immer noch nicht, was Ihre Erklärung mit "Rechenleistung" zu tun hat. Beispielsweise können Sie PWM-Routinen schreiben, die delay () nicht verwenden, z. B. millis (), was nur minimale Auswirkungen auf die Ausführungsgeschwindigkeit für den Rest des Codes hätte.
Baldengineer
1
@AnnonomusPerson: Ich würde sagen, dass es zwei Möglichkeiten gibt, PWM im Code zu implementieren: Entweder kann man den Prozessor die PWM in einer Schleife ausführen lassen, die nichts anderes tut, als vielleicht zu entscheiden, wann sie beendet werden soll, oder man kann einen Timer-Tick-Interrupt haben Führen Sie die PWM durch. In der ersten Situation kann der Prozessor während des PWM-Vorgangs nichts anderes ausführen. In letzterem Fall sind der Genauigkeit und Präzision des PWM-Timings Grenzen gesetzt. Hardware-PWM-Schaltungen ermöglichen es einem Chip, saubere PWM-Wellenformen zu erzeugen, die innerhalb einer Bruchteil einer Mikrosekunde genau sind, während andere Dinge ausgeführt werden.
Supercat
Beachten Sie, dass dank der Funktionsweise von Vision eine LED mit 1/4 DC (oder einem anderen Verhältnis) nicht unbedingt den entsprechenden Anteil der vollen Helligkeit anzeigt.
Ignacio Vazquez-Abrams
7

Ein häufiges Missverständnis bezüglich der PWM-Pins besteht darin, dass bei der Verwendung von PWM keine Strombegrenzungswiderstände (z. B. mit LEDs) verwendet werden müssen.

Das ist nicht wahr. Die PWM-Pins sollten als digitale Pins betrachtet werden, die automatisch ein- und ausgeschaltet werden. Dies bedeutet, dass sie auf die gleiche HIGH-Spannung wie alle anderen Pins gehen.

Wenn Sie LEDs mit PWM verwenden, müssen Sie weiterhin Strombegrenzungswiderstände verwenden. Wenn Sie Motoren mit PWM verwenden, sollten Sie (fast immer) einen Transistor verwenden.

Baldengineer
quelle
2
@AnnonomusPerson Nein, das ist nicht korrekt. Sie würden immer noch Strombegrenzer für LEDs benötigen, selbst wenn Sie echte analoge Ausgänge hätten. LEDs benötigen Konstantstromquellen, keine Konstantspannungsquellen.
Baldengineer
3
Sie können LEDs mit einem eingebauten Strombegrenzungswiderstand erhalten. Ich war so enttäuscht, als ich bei Maplin nach einer LED und einem geeigneten Widerstand für den Betrieb mit 12 V gefragt habe, als mir mitgeteilt wurde, dass diese direkt mit 12 V betrieben werden. Heh, warte nur, bis sie versuchen, eine Ladung Transistoren in ein Paket zu packen, um ein UND-Gatter oder so zu machen.
Andrew Morton