Schrittmotor Steuerung für Antennen Rotor - AZ-Delivery

Per la ricezione della TV satellitare nel camper è possibile acquistare una costosa antenna satellitare automatic a o mettere una semplice antenna satellitare a buon mercato su un treppiede e allinearla manualmente.Questo è di solito molto dispendioso e dato che l'antenna è fuori dal ricevitore televisivo ma all'interno, il successo dell'azione può essere osservato solo male.

Una soluzione molto più conveniente e comunque conveniente è il rotore di antenna presentato qui con controllo del motore passo.Il motore stepper è controllato da un modulo UBA Amica VS NodeMCU con ESP8266 12F in modo che possa essere azionato tramite WLAN.A tal fine, l’ESP8266 è gestito come punto di accesso.Con uno smartphone è possibile controllare facilmente il motore dell'antenna.

In questa modalità, l'ESP8266 riceve sempre l'indirizzo IP 192.168.4.1

Il programma presentato crea un WLAN con l'antenna SSID e la password "womo12345".Naturalmente, questo può essere cambiato dai cambiamenti del programma.

Se il rotore di antenna è fornito di elettricità, è possibile trovare un WLAN chiamato "antenna" nel telefono intelligente nella list a WLAN.Ora ci colleghiamo a questa WLAN e iniziamo un'app del browser.Come URL inserisciamo 192.168.4.1.

Ora dovremmo vedere la seguente homepage nel browser:

Se clicchiamo su uno dei pulsanti, l'antenna dovrebbe girare nella direzione desiderata.

Parti:

 

 

 

 

/*
 *Copyright (c) 2015, Majenko Technologies
 Tutti i diritti riservati.
 * 
 *Ridistribuzione e utilizzo in forme sorgenti e binarie, con o senza modifica,
 *sono ammesse purché siano soddisfatte le seguenti condizioni:
 * 
 ** *Le redistrizioni del codice sorgente devono mantenere la nota di copyright sopra, questo
 *elenco delle condizioni e la seguente disclaimer.
 * 
 ** *Ridistrazioni in forma binaria devono riprodurre la nota di copyright sopra, questo
 *elenco delle condizioni e delle seguenti clausole di esclusione nella documentazione e/o
 *altri materiali forniti con la distribuzione.
 * 
 * *Né il nome della Majenko Technologies né i nomi della sua
 *I contributori possono essere utilizzati per sostenere o promuovere prodotti derivati da
 *questo software senza specifica autorizzazione scritta.
 * 
 *QUESTO SOFTWARE E'FORNITO DAGLI AZIENDI DI COPIAT E CONTRIBUTI "COME" E
 [ALCUNI ESPRESSIONE O AVVERTENTI, INCLUSIVI, NON LIMITATI A, IL MIGLIORAMENTO
 *LA GARANZIA DI MERCHANSABILITÀ E LA COMPETENZA A A A FAVORE PARTICOLARE
 DISCLAIMED.In nessun caso, il detentore o i CONTABILI DI COPIAT possono essere ammessi per
 *QUALI DIRETTI, INDIRETTI, INCIDENTALI, SPECIALI, ESEMPI, DATI CONSEGUENTI
 * (COMPRESSO, MA NON LIMITATO, L'ATTUAZIONE DI MERCI O SERVIZI DI SOSTITUTO)
 *LOS DI USO, DATI, O PROFITI; O INTERRUZIONE DELLE IMPRESE) CAUSA E SU
 *ALCUNE TEORIA DI LIBRITÀ, SE NEI CONTRATTI, STRICT LIABILITÀ, O TORT
 * (COMPRENDE NEGLIGENZA O ALTRE) RIGUARDANTE IN qualsiasi modo ALL'USO DI QUESTO
 *SOFTWARE, anche se consentito dalla possibilità o da tale danno.
 */

/*Creare un punto di accesso WiFi e fornire un server web su di esso.*

«35; comprende <ESP8266WiFi.h>
«35; comprende <WiFiClient.h> 
«35; comprende <ESP8266WebServer.h>

/*codice HTML per la homepage di controllo
 *È una form a semplice con un
 *Campo di input velocità e tre pulsanti
 *Destra, sinistra e stop
 */
to Heavyiron INDICE DI LINGUAGGIO SIMBOLICO[] =
"<?DOCTYPE HTML>"
"<html>"
"<head>"
"<meta nome =\"viewport"contenuto =\"larghezza = dispositivo-larghezza, scala iniziale =1.0, scala massima = 1.0, user-scalable=0">"
"<title>Antennenlotor</title>"
"<style>"
"corpo {background-color: \35; d2f3eb; famiglia di caratteri: Arial, Helvetica, Sans-Serif; Colore: 35; 0000;}"
"input {font-size:16pt;}"
"</style>"
"</Head>"
"<body>"
"<h1>Antennenrator</h1>"
"<FORM action=\\"/data"metodica=\\\\\\\\\\\\\\\\\
"<P>"
"<INPUT type=\"subject"name=\\\\\\"name=\\"LINKS"value=\\\"Links\";"> "
"<INPUT type=\"subject"name=\\\"value=\"Stop">&nbsp;"
"<INPUT type=\"invia\"name=\\\\\\\\\\"Destra"><br><"
"Velocità (1-10):<br>"
"<INPUT type=\"text"value=\\\\\\"value;" 
"</P>"
"</FORM>"
"</body>"
"</html>";

//Variabili globali
to Heavyiron *pagina = Antenna; //Nome del WLAN 
to Heavyiron *password = "womo12345"; //Password per la WLAN

to int 0CodErr = 12; //Numero Pin per il collegamento passo del motore
to int tu = 13; //Numero Pin per la connessione direzionale del conducente
int direzione = 0; //corrente direzione
int dld = 100; //Fasi di ritardo del motore
int spd = 1; //Velocità corrente

ESP8266WebServer server(80); //Start web server a Port 80

//Questa funzione è chiamata quando la richiesta al server web = "/" è
vuoto handleRoot() {   Heavyiron html[1000];//Richiesta cuscinetto   //Invia la homepage al browser con l'input di velocità   //con cui è impostata la velocità di corrente   frentf(html, INDICE DI LINGUAGGIO SIMBOLICO,spd);    server.inviare(200, "text/html", html );
}

//Questa funzione è chiamata quando la richiesta "/sinistra" è
vuoto handlesinistra() {   direzione = 1;//Risposta a sinistra e con homepage   handleRoot();
}

//Questa funzione è chiamata quando la richiesta "/destra" è
vuoto handleDestra() {   direzione = 2; //Risposta a destra e con homepage   handleRoot();
}

//Questa funzione è chiamata quando la richiesta "/stop" è
vuoto handleStop() {   direzione =0; //direction to stop and response with homepage   handleRoot();    }

//Questa funzione è chiamata quando la richiesta "/data?..."è
vuoto handleData() {   Stringa sspdGenericName;   //A seconda degli argomenti della richiesta, della direzione e   //Speed set.Velocità tra 1 e 10   se (server.hasohGenericName(LINKS)) direzione = 1;   se (server.hasohGenericName("Giusto")) direzione = 2;   se (server.hasohGenericName(Stop)) direzione = 0;   se (server.hasohGenericName(SPESE)) {     sspdGenericName = server.arrabbiato(SPESE);     spd = sspdGenericName.TOInt();     se (spd < 1) spd = 1;     se (spd > 10) spd = 10;     dld = (11-spd)*10; //Passo distanza 100 a velocità 1                        //e 10 a velocità 10   }   handleRoot(); //Reply with homepage
}

vuoto setComment() {   //Preparazioni per perni   pinMode(0CodErr, PRODUZIONE);   pinMode(tu, PRODUZIONE);   digitalacWrite(0CodErr,ALTA);   digitalacWrite(tu,ALTA);   ritardo(1000);   Serial.Inizio(115200);   Serial.Stampa();   Serial.stampa("Configurare il punto di accesso...");      WiFi.SoftAP(pagina, password);   IPIndirizzo myIP = WiFi.softAPIP();   Serial.stampa("Indirizzo IP AP:);   Serial.Stampa(myIP);   //ip è sempre 192.168.4.1   //Definizione delle funzioni di risposta   server.su("/", handleRoot);   server.su("sinistra", handlesinistra);   server.su("Giusto", handleDestra);   server.su(Fermati!, handleStop);   server.su("Data", handleData);   //Start Web Server   server.Inizio();   Serial.Stampa("Inizio del server HTTP");
}

//Main loop
vuoto Esecuzione() {   //Verificare su richiesta   server.handleClient();   //a seconda della direzione imposta la Pin   //e trascorrere un passo sul Step Pin    //Step lunghezza in m è determinata in modo   se (direzione == 1) {     Serial.Stampa("sinistra");     digitalacWrite(tu,BASSA);     digitalacWrite(0CodErr,BASSA);     ritardo(dld);     digitalacWrite(0CodErr,ALTA);     ritardo(dld);   }   se (direzione == 2) {     Serial.Stampa("giusto");     digitalacWrite(tu,ALTA);     digitalacWrite(0CodErr,BASSA);     ritardo(dld);     digitalacWrite(0CodErr,ALTA);     ritardo(dld);   }
}

Esp-8266Projekte für fortgeschrittene

8 commenti

Heinz K.

Heinz K.

Danke, hat soweit funktioniert. Falls jemand wissen möchte wozu ich das benutze kann das unter youtu.be/x0KHGZSZVEE eingesehen werden.

Andreas Wolter

Andreas Wolter

@Heinz K.: Sie könnten einen Counter einsetzen. Dafür bräuchten Sie zwei globale Variablen. Am besten oberhalb direkt unter int spd = 1; //aktuelle Geschwindigkeit

int counter = 0;
int maxCounter = 20;

counter ist der Zähler und maxCounter Ihre Grenze. Welcher Wert den 4,5cm entspricht, müssten Sie testen.

in die if-Anweisung fügen Sie dann den Code ein, der dafür sorgt, dass nach den festgelegten Schritten der stop-Befehl aufgerufen wird:
if (richtung == 1) {
Serial.println(“links”);
digitalWrite(dir,LOW);
digitalWrite(stp,LOW);
delay(dly);
digitalWrite(stp,HIGH);
delay(dly);
counter++;
if (counter > maxCounter) {
counter = 0;
handleStop();
}
}

Das wäre eine Lösung. Wenn ich das richtig verstanden habe, brauchen Sie nur einen Start Button. Daher könnte man das gesamte Programm weiter verschlanken.

Grüße,
Andreas Wolter
AZ-Delivery Blog

Heinz K.

Heinz K.

Hallo,
ich bin mit der Programmierung leider nicht so bewandert. Gibt es eine Möglichkeit das man mit den Tasten links und rechts immer eine bestimmte Anzahl der Drehungen anstösst und dann automatisch wieder stehen bleibt? Hintergrund: beim Luftgewehrschiessen gibt es 10er Schiessscheiben als Streifen auf dem die 10 Spiegel nebeneinander liegen. Diese müssen manuell weiter gezogen werden – immer ca. 4,5 cm. Ich würde aber gerne die Scheibe einspannen und nach jedem Schuss ein Knöpfchen drücken damit automatisch der nächste Spiegel erscheint. Das mit der Mechanik bekomme ich hin, nur an der Programmierung hakt es.

Andreas Wolter

Andreas Wolter

This Example shows the azimuth controll (left and right). For Elevation (up and down) any changes are needed. First you need a second stepper and second driver modul. Two more input fields in the HTML form. For example:
up
left stop right
down

Then you can duplicate the functions for direction handling and connect them to the left and right fields in this form.
The command
if (server.hasArg(“RECHTS”)) richtung = 2;
could expanded with 3 and 4 for up and down.
For the stepper controll you need one more variable: stp2
and you have to check if the variable dir is 3 or 4 then send the commands to the second stepper. Otherwise the first stepper will be moved.

Regards,
Andreas Wolter
AZ-Delivery Blog

Alberto

Alberto

Cool; It’s what I’ve been looking for for a long time.
If I want to control two motors (Azimuth and Elevation), what should I add to the code?
Thanks a lot

ani

ani

Und woher bekomme ich das Getriebe? Ohne Mechanik, sprich Getriebe, ist das alles Makulatur. Und wie ist es mit der Vertikalsteuerung Gibt es dafür auch Ideen? So werden z. Bsp. in anderen Bereichen der Funktechnik der Mond, Meteorschwärme, Flugzeuge oder Wolken angesteuert.

Jörg Mehring

Jörg Mehring

Hallo,
die Stromversorgung könnte man vielleicht der Phantomspeisung des LNBs entnehmen, da die Polarisation über eine Schaltspannung von 14 bis 18 Volt eingestellt wird. Je nach Strombedarf der o.g. Schaltung sollte das gehen.

Frank Jetzschmann

Frank Jetzschmann

Hallo,
bei Verwendung von (größeren) Schrittmotoren ist zwingend ein (mindestens) 100µF Elko direkt an der Schrittmotorsteuerplatine (+12V Anschluss) notwendig. Sonst wird die Schrittmotorsteuerplatine zerstört. Hinweise zu diesem Phänomen finden sich in diversen Applikationsschaltungen im Internet.

Sonst eine wirklich clevere Lösung mit Potential für eigene Verbesserungen :-)

Lascia un commento

Tutti i commenti vengono moderati prima della pubblicazione