This shows you the differences between two versions of the page.
pm:prj2023:avaduva:rccar [2023/05/21 14:06] andrei_vlad.man [Resurse Software] |
pm:prj2023:avaduva:rccar [2023/05/30 00:36] (current) andrei_vlad.man [Download] |
||
---|---|---|---|
Line 20: | Line 20: | ||
* Cablu alimentare jack/normal pentru Arduino/Punte H | * Cablu alimentare jack/normal pentru Arduino/Punte H | ||
- | ==== Posibile componente (modificari) ==== | + | |
- | * Buzzer pasiv (daca reusesc sa il fac functional, din lipsa de pini) | + | |
- | * 2x DC-Motor 3-6V (in plus, daca masina duce lipsa de torque) | + | |
- | * Rezistoare (pentru a ajusta tensiunea de la baterii) | + | |
==== Schema Electrica ==== | ==== Schema Electrica ==== | ||
Line 55: | Line 52: | ||
{ | { | ||
cli(); | cli(); | ||
+ | USART0_init(); | ||
+ | ... | ||
+ | EICRA |= (1 << ISC01); | ||
+ | EIMSK |= (1 << INT0); | ||
+ | | ||
+ | DDRB |= (1 << DDB4); | ||
+ | TCCR1A = (1 << COM1A1) | (1 << COM1B1) | (1 << WGM10); | ||
+ | OCR1B = 255; | ||
+ | | ||
+ | DDRD |= (1 << DDD5); | ||
+ | TCCR0A = (1 << COM0B1) | (1 << WGM00) | (1 << WGM01); | ||
+ | TCCR0B = (1 << CS01) | (1 << CS00); | ||
+ | OCR0B = 255; | ||
... | ... | ||
IrReceiver.begin(RECV_PIN, ENABLE_LED_FEEDBACK); | IrReceiver.begin(RECV_PIN, ENABLE_LED_FEEDBACK); | ||
Line 80: | Line 90: | ||
} | } | ||
</code> | </code> | ||
+ | |||
+ | Tot aici configuram si timerele in regim fast PWM, alaturi de protocolul USART pentru o interfata seriala de debug. | ||
==== Loop principal ==== | ==== Loop principal ==== | ||
Line 100: | Line 112: | ||
<code> | <code> | ||
- | if (t_now - t_reset < 200 && last_command != -1) | + | if (t_now - t_reset < 200 && last_command != -1) { |
- | { | + | USART0_transmit('O'); |
+ | USART0_transmit('n'); | ||
+ | USART0_transmit(decode[last_command]); | ||
+ | USART0_transmit('\n'); | ||
doMove(); | doMove(); | ||
} else { | } else { | ||
Line 110: | Line 125: | ||
==== Manipularea motoarelor ==== | ==== Manipularea motoarelor ==== | ||
- | Cum se executa miscarea ? Prima oara setam viteza dorita pentru motor. Vom folosi configurarea fast PWM. Apoi, se trimite semnal catre input-ul de la puntea H pentru a activa motoarele DC. | + | Cum se executa miscarea ? Prima oara setam viteza dorita pentru motor. Vom folosi configurarea fast PWM, ca mai sus. |
**TO-DO** | **TO-DO** | ||
configurare fast pwm prin metoda clasica. | configurare fast pwm prin metoda clasica. | ||
Line 116: | Line 131: | ||
void doMove() | void doMove() | ||
{ | { | ||
- | analogWrite(ENB, speed); // fast pwm | ||
digitalWrite(IN1, directionA); | digitalWrite(IN1, directionA); | ||
digitalWrite(IN2, !directionA); | digitalWrite(IN2, !directionA); | ||
Line 126: | Line 140: | ||
Pentru MotorOff, se seteaza IN1-4 pe LOW pentru a opri miscarea rotilor. | Pentru MotorOff, se seteaza IN1-4 pe LOW pentru a opri miscarea rotilor. | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
+ | |||
+ | Masina functioneaza intr-un mediu ideal, dar acesta din pacate nu exista. Pe scurt, masina functioneaza optim in aer, iar pe pamant nu se va misca din lipsa torque-ului sau a rotilor. m(:-/:-( | ||
+ | |||
+ | {{:pm:prj2023:avaduva:mav-modelmasina.jpeg?nolink&700|}} | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | Investiti bani in motoare performante si roti, altfel munca voastra va fi in zadar. | ||
===== Download ===== | ===== Download ===== | ||
+ | |||
+ | {{:pm:prj2023:avaduva:rc-car.zip}} | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
==== Pana acum ==== | ==== Pana acum ==== | ||
Line 136: | Line 157: | ||
* Prezentare Software | * Prezentare Software | ||
- | ==== TO-DO ==== | + | |
- | * Verificare integritate punte H/ inlocuire (cred ca am nenorocit-o) | + | |
- | * Completare Hardware/Software | + | |
- | * Incercare forma de masina pentru ansamblu | + | |
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||