Schrittmotor Steuerung für Antennen Rotor - AZ-Delivery

Pour recevoir la télévision par satellite dans un camping - car, vous pouvez acheter une antenne satellite automatique coûteuse ou mettre une antenne satellite simple bon marché sur un trépied et l 'aligner manuellement.Cela prend souvent beaucoup de temps, car l'antenne est à l'extérieur du récepteur de télévision, mais il est difficile d'y voir le succès de l'opération.

Une solution plus pratique et plus avantageuse est la commande de moteur pas à pas proposée ici par le rotor d 'antenne.Le moteur pas à pas est commandé par le module nodemcu lua amica vs avec esp8266 12F, ce qui permet de fonctionner par l 'intermédiaire du WLAN.À cette fin, esp8266 sert de point d 'accès.En utilisant un téléphone portable intelligent, vous pouvez facilement contrôler le moteur d 'antenne.

Dans ce mode, esp8266 reçoit toujours l 'adresse IP 192.168.4.1

Ce programme crée un WLAN avec une antenne sisid et un mot de passe womo 12345.Bien sûr, cela peut changer en changeant de programme.

Si le rotor d 'antenne est électrifié, vous pouvez trouver un WLAN appelé antenne dans un téléphone intelligent de la liste WLAN.Nous sommes maintenant connectés à ce WLAN et activons l 'application du navigateur.En tant qu'URL, nous saisissons 192.168.4.1.

Il est temps de voir la page d 'accueil suivante dans le navigateur:

Si nous cliqueons sur l 'un de ces boutons, l' antenne doit tourner dans la direction souhaitée.

Partie:

 

 

 

 

/*
 * Tous droits d 'auteur c) 2015, majenko technologies
 Tous droits réservés.
 * 
 * redistribution et utilisation sous forme de sources et de binaires, avec ou sans modification;
 * est autorisée si les conditions suivantes sont réunies:
 * 
 * * La redistribution du code source doit conserver la Déclaration de droits d'auteur mentionnée ci - dessus.
 * Liste des conditions et des exonérations suivantes.
 * 
 * * La redistribution sous forme binaire nécessite la reproduction de la déclaration susmentionnée sur les droits d'auteur.
 * Liste des conditions figurant dans le document et des exonérations et / ou
 * Autres documents publiés ultérieurement.
 * 
 * * qu'il s'agisse de majenko technologies ou de son nom.
 * Les contributions peuvent être utilisées par les contributeurs pour appuyer ou promouvoir les activités de l'Organisation.
 * Le présent logiciel n'a pas fait l'objet d'une licence écrite préalable.
 * 
 * Le logiciel est fourni « tel qu'il a été modifié » par les propriétaires et les contributeurs de droits d'auteur; et
 * toute garantie expresse ou implicite, y compris mais non exclusivement
 * Les garanties d'applicabilité commerciale et spécifique sont les suivantes:
 * Non.En aucun cas le titulaire du droit d'auteur ou le contribuant n'est responsable.
 * toute donnée directe, indirecte, accessoire, spéciale, indicative ou complémentaire
 * y compris, mais non exclusivement, la passation de marchés de biens ou de services de remplacement;
 * perte de jouissance, de données ou de bénéfices; ou interruption de l'activité, quelle qu'en soit la cause
 • toute doctrine de responsabilité, contractuelle, objective ou délictuelle;
 * y compris la négligence ou toute autre négligence résultant de l'utilisation du présent document.
 * logiciel, même s'il est informé de cette possibilité ou de ce dommage.
 */

/ * crée un point d 'accès WiFi et fournit un serveur Web sur ce point.*

"35; y compris <Esp8266wifi.Heure>
"35; y compris <Wificlient.Heure> 
"35; y compris <Serveur Web esp8266.Heure>

Code HTML de la page d 'accueil du contrôle
 * C'est une simple formalité.
 * boîte de saisie de vitesse et trois boutons
 Droite, gauche, stop.
 */
Constante Brûler Index HTML[] =
"& lt?DocType HTML & gt
"& lt; HTML & gt;"
"& lt; tête & gt;"
"& lt; meta = name = \ " viewport \ \ Content \ \ "with =" largeur du matériel, rapport initial = 1,0, rapport maximum = 1,0, rapport zoom = 0 "& gt;"
"& lt; Titre & gt; Rotor d 'antenne & lt; Titre & gt;"
"& lt; styles & gt;"
Le texte {couleur de fond: "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
"entrée - font-taille:16pt;
"Lt;/style’gt;"
"Lt;/tête-gt;"
"Lt;body’gt;"
"Lt;h1'gt;Antenna rotor’lt;/h1'gt;"
"Lt;FORM action""/data" méthode "post"gt;"
"Lt;P’gt;"
" Type "lt;INPUT""soumettre" nom "LINKS"" valeur "Links" 'gt;'amp; nbsp;"
" Type "lt;INPUT""soumettre" nom "STOP" valeur "Stop" 'gt;'amp; nbsp;"
"Lt;INPUT type""soumettre" nom "RIGHT" valeur "Droit""''s ''s’est bien’il lt;br’gt;lt;br’gt;br’gt;"
"Vitesse (1 - 10): lt;br’gt;"
"Lt;INPUT type"texte" valeur "%i" nom "SPEED" 
"Lt;/P’gt;"
"Lt;/FORM’gt;"
"Lt;/corps’gt;"
"Lt;/html’gt;";

Variables globales
Const Char Char *Ssid = "Antenna"; Nom du Wi-Fi 
Const Char Char *mot de passe = "womo12345"; Mot de passe pour Wi-Fi

Const Int Stp (Stp) = 12; Numéro de broche pour la connexion d’étape du conducteur de moteur
Const Int Vous = 13; Numéro de broche pour la connexion de direction du conducteur de moteur
Int Direction = 0; direction actuelle
Int Dly = 100; Retard pour les marches motrices
Int Spd = 1; vitesse actuelle

ESP8266WebServateur Serveur(80); Les serveurs Web commencent sur le port 80

Cette fonction est appelée lorsque la demande sur le serveur web est "/"
Vide handleRoot() {   Char Char Html[1000];Tampon pour la demande   Envoyer la page d’accueil au navigateur, où l’entrée de vitesse   pré-doté à la vitesse actuelle   Sprintf(Html, INDEX_HTML,Spd);    Serveur.Envoyer(200, "texte/html", Html );
}

Cette fonction est appelée lorsque la demande est "/gauche"
Vide handleLeft() {   Direction = 1;Répondre à la direction à gauche et avec la page d’accueil   handleRoot();
}

Cette fonction est appelée lorsque la demande est "/droite"
Vide poignéeRight() {   Direction = 2; Répondre à la direction à droite et avec la page d’accueil   handleRoot();
}

Cette fonction est appelée lorsque la demande est "/stop"
Vide handleStop() {   Direction =0; Direction de s’arrêter et de répondre avec la page d’accueil   handleRoot();    }

Cette fonction est appelée lorsque la demande "/données?..." Est
Vide handleData() {   String sspd;   Selon les arguments de la demande, l’orientation et   jeu de vitesse. Vitesse entre 1 et 10   Si (Serveur.hasArg("GAUCHE")) Direction = 1;   Si (Serveur.hasArg("DROIT")) Direction = 2;   Si (Serveur.hasArg("STOP")) Direction = 0;   Si (Serveur.hasArg("VITESSE")) {     sspd = Serveur.Mauvais("VITESSE");     Spd = sspd.Toint();     Si (Spd < 1) Spd = 1;     Si (Spd > 10) Spd = 10;     Dly = (11-Spd)*10; Étape distance 100 à la vitesse 1                        et 10 à la vitesse 10   }   handleRoot(); Répondre avec la page d’accueil
}

Vide Configuration() {   Préparation des broches   pinMode(Stp (Stp), Sortie);   pinMode(Vous, Sortie);   digitalWrite (en)(Stp (Stp),Haute);   digitalWrite (en)(Vous,Haute);   Retard(1000);   Série.Commencer(115200);   Série.println();   Série.Imprimer("Configurer le point d’accès...");      Wifi.softAP (softAP)(Ssid, mot de passe);   Ipaddress Myip = Wifi.softAPIP softAPIP();   Série.Imprimer("AP adresse IP: ");   Série.println(Myip);   ip est toujours 192.168.4.1   Définition des fonctions de réponse   Serveur.Sur("/", handleRoot);   Serveur.Sur("/gauche", handleLeft);   Serveur.Sur("/droite", poignéeRight);   Serveur.Sur("/stop", handleStop);   Serveur.Sur("/données", handleData);   Démarrer le serveur Web   Serveur.Commencer();   Série.println("Le serveur HTTP a commencé");
}

Boucle principale
Vide Boucle() {   Vérifier la demande   Serveur.handleClient();   en fonction de la direction de la broche de direction   et la sortie d’une étape sur la broche d’étape    La longueur de l’étape en ms est déterminée par dly   Si (Direction == 1) {     Série.println("gauche");     digitalWrite (en)(Vous,Faible);     digitalWrite (en)(Stp (Stp),Faible);     Retard(Dly);     digitalWrite (en)(Stp (Stp),Haute);     Retard(Dly);   }   Si (Direction == 2) {     Série.println("droit");     digitalWrite (en)(Vous,Haute);     digitalWrite (en)(Stp (Stp),Faible);     Retard(Dly);     digitalWrite (en)(Stp (Stp),Haute);     Retard(Dly);   }
}

Esp-8266Projekte für fortgeschrittene

8 commentaires

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 :-)

Laisser un commentaire

Tous les commentaires sont modérés avant d'être publiés

Articles de blog recommandés

  1. ESP32 jetzt über den Boardverwalter installieren - AZ-Delivery
  2. Internet-Radio mit dem ESP32 - UPDATE - AZ-Delivery
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1 - AZ-Delivery
  4. ESP32 - das Multitalent - AZ-Delivery