NOUL MODUL START STOP DE LA NANOLABS!
Descrierea principală
- Compatibil cu 5 V și 3,3 V (este nevoie de un singur pin de intrare pe Arduino sau microcontroler)
- Dimensiune mică (10,5 mm x 12,5 mm x 4 mm)
- Simplu de utilizat și rapid de programat
- Open source și hardware deschis
Cum se folosește în timpul competițiilor?
- Mai întâi trebuie să programați modulul astfel încât să reacționeze și să-și amintească o anumită telecomandă a arbitrului
- Porniți robotul și apoi arbitrul trimite un semnal de programare (LED-ul va clipi de 2 ori)
- Acum modulul de pornire este gata pentru a primi semnalul de pornire și oprire (LED-ul este aprins când este pornit și clipește când este oprit).
Pornire de la distanță și killSwitch
Fiecare rundă este începută de către arbitrul care trimite un semnal de start cu un transmițător IR. De îndată ce robotul primește semnalul, runda va începe. (Această metodă face meciurile mai corecte, deoarece elimină pornirile false și, de asemenea, economisește timp, deoarece este nevoie de mai puține reporniri).
KillSwitch
KillSwitch-ul este folosit pentru a întrerupe alimentarea motoarelor robotului, care este folosit ca măsură de siguranță și este obligatoriu doar la clasa de 3 kg. Când arbitrul trimite comanda de oprire, alimentarea motoarelor trebuie întreruptă. Constructorul robotului este responsabil pentru adăugarea unui astfel de comutator de oprire pe robot. Cu toate acestea, modulul preconstruit poate furniza semnalul pentru activarea comutatorului de oprire. Exemple de design recomandat pot fi găsite mai jos.
Design recomandat pentru Kill Switch
Cum se implementează circuitul Kill switch folosind un releu.
http://www.startmodule.com/kill-switch-relay/
Cum se implementează circuitul Kill switch folosind un optocupler.
http://www.startmodule.com/kill-switch-oc/
Moduri de operare
Figura de mai jos ilustrează modurile de funcționare ale modulului.
Pentru a fi mai puțin sensibil la zgomot și perturbări, modulul își va salva starea curentă
într-o memorie nevolatilă și, dacă este resetat, va reveni la ultima stare cunoscută.
Aceasta înseamnă că fiecare meci se va încheia cu arbitrul care trimite comanda de oprire.
Notă: Dacă LED-ul de pe modul este aprins înainte ca arbitrul să trimită comanda de pornire,
înseamnă că modulul este în starea „Pornit”. Apoi comanda de oprire trebuie trimisă și robotul trebuie
să repornească pentru ca modulul să revină la starea „Pornire”.
Pentru a putea rula mai multe meciuri unul lângă celălalt, fiecare dohyo va avea propriul său identificator unic.
Modulul preconstruit poate fi reprogramat pentru a asculta un nou identificator.
Acest lucru este realizat de către arbitru prin trimiterea unei comenzi speciale de programare care
actualizează acest identificator.
Pentru utilizatorii începători:
Codul de mai jos este mai mult sau mai puțin un pseudocod. Trebuie să-l adaptați la tipul dvs. de microcontroler și la structura codului dvs. Îl puteți schimba așa cum vă place, dar trebuie să verificați dacă codul funcționează corect, astfel încât să nu existe penalizări dacă robotul nu se comportă așa cum ar trebui.
Pseudocodul nu este proiectat eficient deoarece fiecare utilizator are propriile idei de scriere a software-ului. Ar trebui privit ca un început pentru utilizatorii fără experiență care tocmai au început să programeze roboți. Codul folosește bucle while care țin robotul blocat în bucle diferite care nu sunt flexibile.
1.Când porniți robotul, trebuie să verificați dacă pinul de pornire este într-o stare de nivel „0”.
robot_ready_state = false;
// initial check
initial _start_pin_state = digitalRead(start_pin);
if (initial_start__pin_state == 1) {
// error, the start pin should be 0 when you power your robot
// if start pin state was “1” at the initial check you have to ask the referee to //press the stop button and then power off and on your robot
while(true) {
// for safety reasons the robot is locked in this loop
// you can flash a separate LED to let the user know
// the only way to exit this loop is to do a power cycle
}
} else if (initial_start_pin_state == 0) {
// correct state
// the robot is ready to accept the start command
robot_ready_state = True;
}
2.Dacă verificarea inițială a trecut, puteți trece la următoarea parte în care trebuie să monitorizați starea pinului de pornire pentru a prinde comanda de pornire declanșată de arbitru.
current_start_pin_state = 0;
while (current_start_pin_state == 0) {
// keep the robot locked in a loop until the start command is received
current_start_pin_state = digitalRead(start_pin);
}
// the program will continue only if the start command is received
3. Când este primită comanda de pornire, robotul poate începe să opereze pe dohyo. Când este primită comanda de oprire, robotul ar trebui să oprească toate activitățile (deplasare, întoarcere).
If (current_start_pin_state == 1 and robot_ready_state == True) {
// the start command was received and the robot was in a ready state
// this is where the robot will start to compete against the opponent
// the if condition will not execute unless the robot is in a ready state.
while (current_start_pin_state == 1) {
// keep the robot locked in a loop until the stop command is received
current_start_pin_state = digitalRead(start_pin);
}
// the program will continue only if the stop command is received
If (current_start_pin_state == 0) {
// the stop command was received
// this is where the robot should stop all operations
while (true) {
// for safety reasons the robot is locked in this loop
// you can flash a separate LED to let the user know
// the only way to exit this loop is to do a power cycle
}
}
}
Recenzii
Nu există recenzii până acum.