Inhaltsverzeichnis:

Clap-on-Schalter - Gunook
Clap-on-Schalter - Gunook
Anonim
Image
Image

Ein Verwandter hat mich einmal gefragt, ob ich einen Schalter bauen könnte, der auf Händeklatschen reagiert. Also habe ich einige Sachen bestellt, um ein Projekt zu erstellen, und beschlossen, ein anweisbares zu machen, damit jeder einen tollen Schalter wie diesen haben kann.

Der Mikrocontroller ist das Gehirn dieses Projekts. An den Mikrocontroller ist ein Schallsensor angeschlossen, der analoge Daten sendet, wenn Schall erkannt wird. Der Mikrocontroller ist so programmiert, dass er große Klangunterschiede erkennt. Wenn eine ausreichend hohe Differenz erkannt wird, also ein Klatschen, sendet der Mikrocontroller ein Signal an das Relais. Das Relais schaltet und das Licht geht an. Beim zweiten Klatschen erlischt das Licht wieder.

Lieferungen

Physische Dinge:

  • 1x ATmega328P Xplained Mini mit Kabel zur Programmierung
  • 1x 5V Relaismodul 1-Kanal (KY-019 oder ähnlich)
  • 1x Schallsensormodul (KY-038 oder ähnlich)
  • 1x Steckbrett
  • 6x Stecker-Stecker-Überbrückungskabel
  • 1x Lichtsteckdose mit Kabel (oder jedes andere Gerät, das Sie einschalten möchten)
  • 1x Glühbirne
  • 1x Widerstand* (ich verwende 220 Ohm)
  • 1x LED*

Software Download):

  • AtmelStudio 7.0 (https://www.microchip.com/mplab/avr-support/atmel-studio-7)
  • Putty (www.putty.org)*

*Zu Testzwecken

Schritt 1: Verbindungen

Programm erstellen
Programm erstellen

Schließen Sie alle Drähte wie im Bild gezeigt an.

Schritt 2: Erstellen des Programms

Programm erstellen
Programm erstellen
Programm erstellen
Programm erstellen

Ich codiere gerne in C, daher ist dieses Projekt in C geschrieben.

Wenn Sie die erforderliche Software noch nicht heruntergeladen und installiert haben, laden Sie sie jetzt herunter und installieren Sie sie.

Folgen Sie nun diesen nächsten Schritten:

  1. Öffnen Sie AtmelStudio.
  2. Klicken Sie auf "Datei" -> "Neu" -> "Projekt".
  3. Klicken Sie auf "Ausführbares GCC C-Projekt". Geben Sie Ihrem Projekt einen Namen und einen Speicherort. OK klicken".
  4. Suchen Sie nach dem ATmega328P. Klicken Sie auf "ATmega328P" -> "Ok".
  5. Klicken Sie im Solution Explorer auf "main.c", um das Hauptprogramm zu öffnen.

Schritt 3: Code hinzufügen

Löschen Sie den bereits vorhandenen Code in main.c

Kopieren Sie den folgenden Code und fügen Sie ihn in main.c ein

#define F_CPU 16000000

#include #include #include #include "usart.h" #define MINIMALWERT 5 void InitADC(); uint16_t ReadADC(uint8_t ADCchannel); Doppelwert1, Wert2; int main(void) { // USART initialisieren USART_init(9600); USART_putstr("#USART init\n"); // Initialisiere den ADC InitADC(); USART_putstr("#ADC-Init\n"); // PC1-Pin des PORTC-Ausgangs, der Resteingang. DDRC = 0b00000010; // Anfangswerte auf PORTC niedrig setzen. PORTC = 0b00000000; Während (1) { // Potentiometerwert lesen // Wert lesen und in val1 speichern val1 = ReadADC (0); _verzögerung_ms(1); // nächsten Wert lesen und in val2 speichern val2 = ReadADC (0); char str[10]; // der ReadADC() gibt den Wert in ganzen Zahlen zurück. Wenn wir debuggen oder den Wert auf Putty anzeigen möchten, // muss der Wert in Zeichen umgewandelt werden, damit die USART ihn drucken kann. itoa(val1, str, 10); USART_putstr(str); USART_putstr("\n"); // wenn die 2 Werte einen gewissen Unterschied aufweisen. Ein Ton wird erkannt und wechselt einen Port. // MINIMALVALUE kann geändert werden, eine Erhöhung macht ihn weniger empfindlich. Durch Verringern wird es empfindlicher if(val1-val2 > MINIMALVALUE || val2-val1 > MINIMALVALUE) { PORTC ^= 0b00000010; // LICHT AN UC _delay_ms(200); } } } void InitADC() {// Wählen Sie Vref=AVcc ADMUX |= (1<<REFS0); // Prescaller auf 128 setzen und ADC ADCSRA aktivieren |= (1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADEN); } uint16_t ReadADC (uint8_t ADCchannel) {// ADC-Kanal mit Sicherheitsmaske auswählen ADMUX = (ADMUX & 0xF0) | (ADC-Kanal & 0x0F); //Einzelkonvertierungsmodus ADCSRA |= (1<<ADSC); // warten bis die ADC-Konvertierung abgeschlossen ist while(ADCSRA & (1<<ADSC)); ADC zurückgeben; }

Schritt 4: Hinzufügen von USART

USART. hinzufügen
USART. hinzufügen

Das USART ist ein serielles Kommunikationsprotokoll, das auf dem Mikrocontroller verwendet werden kann. Ich verwende es auf dem Mikrocontroller, um analoge Daten vom Sensor zu sehen.

Die USART ist bereits korrekt programmiert und enthält eine Header- (.h) und eine Quelldatei (.c). Laden Sie die 2 Dateien herunter und fügen Sie sie Ihrem Programm in AtmelStudio hinzu.

Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektnamen. Klicken Sie auf „Hinzufügen“-> „Vorhandenes Element…“und wählen Sie die 2 heruntergeladenen Dateien aus.

Schritt 5: Ausführen des Codes

Ausführen des Codes
Ausführen des Codes
Ausführen des Codes
Ausführen des Codes

Verbinden Sie den Mikrocontroller mit dem Computer. Suchen Sie auf Ihrem Computer nach "Gerätemanager" und öffnen Sie ihn. Suchen Sie nach "Ports (COM & LPT)" und merken Sie sich den COM-Port, an dem sich der Mikrocontroller befindet.

Öffnen Sie PuTTY und klicken Sie auf „Seriell“, geben Sie den gefundenen COM-Port des Mikrocontrollers ein und klicken Sie auf „Öffnen“. Ein Terminal taucht auf, lassen Sie es vorerst.

Gehen Sie zurück zu AtmelStudio, um das richtige Werkzeug zum Programmieren des Mikrocontrollers auszuwählen.

  1. Klicken Sie auf das Hammerwerkzeug.
  2. Wählen Sie den Debugger/Programmierer "mEDBG*ATML".
  3. Wählen Sie die Schnittstelle "debugWIRE".
  4. Klicken Sie auf "ohne Debugging starten".

Das Programm wird bauen und schreiben.

Wenn das Programm korrekt ausgeführt wird, sehen Sie in puTTY ganzzahlige Werte. Mit einem Schraubendreher kann ich den in puTTY angezeigten Wert ändern, indem ich die Schraube am Sensor drehe. Mein Sensor gibt beim Volldrehen der Schraube die Werte von 0 bis 1000 aus. Ich drehe die Schraube auf 100 (10%) des Gesamtwertes. Ich habe festgestellt, dass das bei mir funktioniert.

Schritt 6: Empfindlichkeit ändern

Um die Empfindlichkeit beim Einschalten des Lichts einzustellen, können Sie 2 Optionen verwenden, aber wählen Sie eine nicht beide:

  1. Sensorschraube wechseln;
  2. Codewert ändern.

Ich verwende Option 2. Eine Erhöhung des MINIMALVALUE macht ihn weniger empfindlich, eine Verringerung macht ihn empfindlicher.

#define MINIMALWERT 5

Schritt 7: Wechseln Sie alles, was Sie mögen

Wechseln Sie, was Ihnen gefällt!
Wechseln Sie, was Ihnen gefällt!
Wechseln Sie, was Ihnen gefällt!
Wechseln Sie, was Ihnen gefällt!

WARNUNG: Vorsicht beim Schalten höherer Spannungen

Wenn Sie mit der Empfindlichkeit des Sensors zufrieden sind, können Sie die Schaltung ändern. Ändern Sie die Schaltung wie im Bild oben. Sie können jetzt alles ändern, was Sie möchten!