Skocz do zawartości

daniel89

Użytkownicy
  • Zawartość

    43
  • Rejestracja

  • Ostatnio

Reputacja

-1 Słaba

O daniel89

  • Ranga
    3/10

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    Ostrowiec
  • Zawód
    technik

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

  1. Tak w kilku aby to było w miarę czytelne. Czy gdzieś popełniłem błąd w połączeniu czy wszystko jest ok ? Transil to P4SMAJ17CA. Resztę raczej widać. To jest sama płyta główna. Poza tym jeszcze płytki enkoderów i czujników, ale tam wiem że jest dobrze więc nie ma potrzeby sprawdzenia. Jakieś uwagi macie do tego ?
  2. daniel89

    Timer w STM32 do sterowania silnika przez PWM

    Ok czyli rozumiem że mogę na spokojnie na PA8 i PA11 STM32F103RBT6 ustawić TIM1_CH1 oraz TIM1_CH4 na PWM i normalnie bez negacji sterować ? Chodzi mi o te kanały CH1-CH4 rozumiem że każdy jest z osobna sterowany i nie ma wymogu czy jest że to ma być CH1 i CH2 np czy dowolnie jaki? Też rozumiem że mogę timery sterować i z negacją i bez , coś mi się rozjaśniło dzięki .
  3. Witam, Mam pytanie odnośnie timerów w STM32F103 . Znalazłem w nocie katalogowej że TIM1 służy do zadawania PWM, ale nie mogę znaleźć informacji jakie kanały powinny to obsługiwać. Może to banalne ale nie rozumiem czy jeśli kanał w nazwie ma N to czym się różni względem tego bez N i na jakich kanałach powinien być sterowany silnik DC przez TB6612. Znalazłem że ktoś podpiął pod TIM1_CH1N oraz TIM1_CH3N , i nie rozumiem czemu pod to z nazwą N i czy można obojętnie który kanał wykorzystać .. U mnie zostały wolne nóżki PA8 i PA11 w stm32f103rbt6, i tam jest TIM1_CH1 oraz TIM1_CH4 , ale bez N i czy można wykorzystać te nóżki do tego mostka H? Jeśli pytam o głupoty to proszę chociaż mi podać literaturę gdzie wyjaśnione są te wszystkie timery jak działaja w tym sterowniku.
  4. daniel89

    Jaki model modułu Bluetooth wybrać?

    Następny mądry Arduinowiec. Ja się tym bawiłem 10 lat temu. Nie po to się pytam o poziomy napięć by coś spalić. To co chcę zrobić jest moją sprawą , zrobię sobie robota bo zawsze co sobie postanowię to robię i tyle w temacie , nie mam zamiaru bawić się arduino kolejny raz. Podepnę sobie moduł bluetooth i sprawdzę dla pewności czy 3,3V na RX oraz TX i nie będzie żadnego problemu dla mnie ale wam trudno co kolwiek powiedzieć tylko się mądrujecie. W datasheet pisze że ten układ na 3,3V pracuje więc tyle powinien wystawić w RX oraz TX, a producent deklaruje że 5V też obsługuje, ale uC już tylko 3,3, więc musi być zgodność napięciowa i tyle w temacie. Już można ten temat zamknąć bo żadnej pożytecznej wiedzy tutaj nie dajecie.
  5. daniel89

    Jaki model modułu Bluetooth wybrać?

    Dalej nie rozumiem Ciebie. UART w logice CMOS pracuje na 3,3V a w logice TTL na 5V. Co mi da jak podepnę do Arduino na 5V , potem się zapląta początkujący i podepnie na 5V i upali STM-a . Tak wiem konwerter poziomów logicznych załatwi sprawę? Tam logika jest na 3,3V . Ten moduł bluetooth pracuje w komunikacji 3,3V i nie potrzeba konwertera napięć. Wgrywając program gotowy na arduino żadnej sprawy tym nie załatwię. Oczywiście jeśli nie znajdę przykładu komunikacji na STM-a to sobie przerobię tą z Arduino , ale tak to dalej nie widzę sensu tracić czas na Arduino i bawieniem się 5V na płytce stykowej. No chyba że mówisz o arduino M0 , ale takiego nie mam. Nie rozumiem sensu bawienia się Arduino i tracąc czas na to chcąc zrobić coś na STMie . Znowu bawienie się na płytce STM-em to kolejna strata czasu chcąc mieć gotowe urządzenie docelowe, to nie programowanie w tym przypadku tylko tworzenie elektroniki i lutowanie .
  6. daniel89

    Jaki model modułu Bluetooth wybrać?

    a co to za problem nauczyć się czegoś na gotowym urządzeniu? Nie ma człowiek tyle czasu by sobie nie wiadomo co i po co ćwiczyć, chyba że Ty masz to gratuluję wyrozumiałości domu rodzinnego. Co do pomocy to tylko prosiłem o informację który moduł jest lepszy do konkretnego zastosowania i dalej widzę HC-05 lub HC-06 bez konkretnego podanego. Widocznie te fora służą tylko oczernianiu i pokazywaniu jaki kto jest mądry. Jak bym wiedział który to bym nie pytał. Zbyt dużo mam na głowie i analizowanie wszystkich datasheetów nie wchodziło w grę jeśli ktoś już tego używał, ale widocznie i tak muszę liczyc tylko na siebie. Już nie pytam o pomoc was bo tylko jakieś pokazywanie że ktoś nie ma pojęcia jest. Sam sobie wybrałem po rozmowie z kolegą HC-06 bo go używał i mi wyjaśnił różnice w przeciwieństwie do was . Żegnam.
  7. daniel89

    Jaki model modułu Bluetooth wybrać?

    Kolego takie rady to sobie daruj .
  8. daniel89

    Jaki model modułu Bluetooth wybrać?

    Dobrze to przynajmniej mi powiedz taki moduł Bluetooth HC-05 czy HC-06 jak podam napięcie zasilania 5VDC to według danych sprzedawcy będzie działać prawidłowo bo od 3,6 do 6V przyjmuje. Tylko nie bardzo rozumiem teraz wyprowadzenia komunikacyjne RX oraz TX, pisze że pracują z 3,3V ale tolerują 5V, więc tego nie rozumiem. Chcę do ARM32F103 podpiąć po RX TX to rozumiem że bezpośrednio bez żadnego konwertera poziomów logicznych? bo widziałem jak ktoś przez konwerter podpinał ale nie pamiętam do jakiego uC. W tym ARM32F103 rozumiem że RX oraz TX pracuje na logice 3,3V ? Jeśli tak to z tego modułu bluetooth jaka komunikacja jest , znaczy po jakim napięciu bym czegoś nie upalił. Też nie wiem czy trzeba tam na tą linię dawać jakieś rezystory czy to tak samo działa ? Szukałem w necie ale pogubiłem się dlatego proszę nie denerwuj się tylko odpowiedz jak możesz.
  9. daniel89

    Jaki model modułu Bluetooth wybrać?

    Wielkie dzięki za wyjaśnienie, czyli rozumiem że modułem slave też odbiorę dane z czujników i będę mógł je zapisać w pamięci tak? Co do modułów BLE to na forum robotyki amatorskiej kilka osób odradzało BLE że to inny standard przesyłu jest ,przez co rozłącza połączenia z telefonem i radzili kupno tam hc-05 . Rozumiem że jak mi tylko slave potrzebny bo telefonem połāczę się z robotem to najkorzystniejszy będzie HC-06? On faktycznie ma mniejszy pobôr od HC-05? Wiesz mi zależy na mniejszyn pobobrze ze względu na miniaturyzacje i zastosowanie stabilizatorów na max800mA a jest sporo już tam na 3.3v podpięte no i oczywiście bateria chodź odrobinę odetchnie. Chyba że jakiś inny bluetooth może godny polecenia, bo wiesz ja na razie mało o tym wiem co jest najkorzystniejsze, bo może warto odrobinę dopłacić? Też był bym wdzięczny za jakiś delikatny opis takiego modułu co on konkretnie potrafi i jak go prawidłowo podpiąć.
  10. Witam, Jaki model Bluetooth polecacie i dlaczego? Z opisów w internetach odradzają wersji BLE, więc z tańszych mam do wyboru HC-05 , HC-06 ZS-040, HC-05 v2, jaki z tych jest dobry , chyba że inny polecicie. Wymagania to oczywiście jak najmniejsze zużycie prądu. Chciałbym wysyłać i odbierać informację komunikując się ze smartfonem, a sterując robotem jeżdżącym. Zakres oczywiście 10 metrów wystarczy, a podłączony ma być do STM32F103. Jeszcze jak by ktoś był uprzejmy i wytłumaczył mi czym się różnią konkretne wersje i czy wystarczy moduł SLAVE czy potrzeba MASTER/SLAVE?
  11. Cześć, Ktoś z was tworzył może bibliotekę do AM4096 w Eagle 9.2.2 . Jeśli tak to może się podzielić ? Przy okazji jeśli ktoś posiada bibliotekę do mocowania silnika Pololu z osią tylną to był bym wdzięczny jak by udostępnił, bo te podane przez administratora nie działają u mnie w Eagle 9.2.2.
  12. daniel89

    Enkodery magnetyczne, minimalna odległość.

    @adriano Mam pytanie do Ciebie w wersji Eagle 9.2.0 skąd masz biblioteki do silnika z mocowaniem Pololu, możesz to udostępnić ? Zależało by mi na silniku z tylną osią ale bez tego elementu magnetycznego bo inny chcę zastosować.
  13. Czemu w tym kodzie jak ustawię wielozadaniowość na odległość mniejszą od 10, to program wykonuje i obrót serwem i jedzie do tyłu, a jak ustawię na odległość większą od 30, aby się serwo obracało wraz z jechaniem do przodu, to serwo nie idzie tzn. wykonuje takie impulsy w bok i się cofa na 90stopni.? #include <IRremote.h> #define irPin 10 IRrecv irrecv(irPin); decode_results results; #include <Servo.h> # define SERVO_PIN 12 Servo servo; byte stan = 0; byte angle = 0; unsigned long servo_time = millis() + 20; unsigned long silnik_time = millis() + 500; // unsigned long pilot_time = millis() + 200; #define trig 2 #define echo 3 int pwmMotorA=5; int InMotorA1=7; int InMotorA2=4; int pwmMotorB=11; int InMotorB1=9; int InMotorB2=8; int pwm; void setup() { irrecv.enableIRIn(); servo.attach(SERVO_PIN); pinMode(pwmMotorA, OUTPUT); pinMode(pwmMotorB, OUTPUT); pinMode(InMotorA1, OUTPUT); pinMode(InMotorA2, OUTPUT); pinMode(InMotorB1, OUTPUT); pinMode(InMotorB2, OUTPUT); pinMode (trig, OUTPUT); pinMode (echo, INPUT); } void loop() { unsigned long time = millis(); // if (time >= pilot_time){ if (irrecv.decode(&results)) { switch (results.value) { case 0x1D00B946: stan=!stan; break; } irrecv.resume(); // pilot_time = time + 200; } int duration, distance; digitalWrite( trig, LOW); delayMicroseconds (2); digitalWrite (trig, HIGH); delayMicroseconds(10); digitalWrite (trig, LOW); duration = pulseIn(echo, HIGH); distance = (duration/2) / 29.1; if (time >=silnik_time && distance<=30 && distance>10 && stan==1) { servo.write(angle=90); analogWrite(pwmMotorA, 225); digitalWrite(pwmMotorB, LOW); digitalWrite(InMotorA1, LOW); digitalWrite(InMotorA2, HIGH); digitalWrite(InMotorB1, LOW); digitalWrite(InMotorB2, LOW); silnik_time = time + 500; } if (time >= servo_time && stan==1 && distance<=10 ) { servo.write(angle); angle+=1; if (angle > 180) angle = 0; servo_time = time + 20; } if (time >= silnik_time && stan==1 && distance<=10 ) { for (pwm=0; pwm <=225 ; pwm=pwm+5){ analogWrite(pwmMotorA, pwm); analogWrite(pwmMotorB, pwm); digitalWrite(InMotorA1, HIGH); digitalWrite(InMotorA2, LOW); digitalWrite(InMotorB1, HIGH); digitalWrite(InMotorB2, LOW);} silnik_time = time + 500; } if( stan==0){ digitalWrite(pwmMotorB,LOW); digitalWrite(pwmMotorA,LOW); servo.write(angle=90); } if (distance > 30 && time >=silnik_time && stan==1) { servo.write(angle=90); digitalWrite(pwmMotorA,1); digitalWrite(pwmMotorB,1); digitalWrite(InMotorA1, LOW); digitalWrite(InMotorA2, HIGH); digitalWrite(InMotorB1, LOW); digitalWrite(InMotorB2, HIGH); silnik_time = time + 500;} }
  14. Z tymi wewnętrznymi timerami sobie nie mogę poradzić, gdyż po ustawieniu danej wartości i tak mi przerwanie działa tylko co 3 sekundy , ale za to udało mi się napisać ten program na milsach , zdefiniowanych jako timery Arduino IDE. także już ten robocik jeździ mniej więcej tak jak chciałem. Do pełni szczęścia muszę jeszcze rozgryźć ustawienia tych timerów także jakby ktoś miał jakiś pomysł to proszę pisać śmiało .
  15. Próbowałem to na tych millsach zrobić , ale jak pilotem załączam to servo się po jednym impulsie obraca, a silniki ani odczyt z czujnika nie działają . Czego to jest wina ? Przecież kod powinien być dobry, oto on : #include <IRremote.h> #define irPin 11 IRrecv irrecv(irPin); decode_results results; #include <Servo.h> # define SERVO_PIN 12 Servo servo; byte stan = 0; byte angle = 0; unsigned long servo_time = millis() + 20; unsigned long silnik_time = millis() + 500; unsigned long pilot_time = millis() + 500; #define trig 2 #define echo 3 int pwmMotorA=6; int InMotorA1=5; int InMotorA2=4; int pwmMotorB=10; int InMotorB1=9; int InMotorB2=8; int pwm = 0; void setup() { irrecv.enableIRIn(); servo.attach(SERVO_PIN); pinMode(pwmMotorA, OUTPUT); pinMode(pwmMotorB, OUTPUT); pinMode(InMotorA1, OUTPUT); pinMode(InMotorA2, OUTPUT); pinMode(InMotorB1, OUTPUT); pinMode(InMotorB2, OUTPUT); pinMode (trig, OUTPUT); pinMode (echo, INPUT); } void loop() { unsigned long time = millis(); if (time >= pilot_time){ if (irrecv.decode(&results)) { switch (results.value) { case 0x1D00B946: stan=!stan; break; } irrecv.resume(); pilot_time = time + 500; } } int duration, distance; digitalWrite( trig, LOW); delayMicroseconds (2); digitalWrite (trig, HIGH); delayMicroseconds(10); digitalWrite (trig, LOW); duration = pulseIn(echo, HIGH); distance = (duration/2) / 29.1; if (time >=silnik_time && distance<=30 && stan==1) { unsigned long silnik_time = millis() + 500; digitalWrite(InMotorA1, LOW); digitalWrite(InMotorA2, HIGH); digitalWrite(InMotorB1, LOW); digitalWrite(InMotorB2, LOW); analogWrite(pwmMotorA,200); analogWrite(pwmMotorB,0); silnik_time = time + 500; } if (time >= servo_time && stan==1 && distance<15 && distance >2) { servo.write(angle); angle++; if (angle > 180) angle = 0; servo_time = time + 20; } if (time >= silnik_time && stan==1 && distance<15 && distance >2 ) { unsigned long silnik_time = millis() + 500; digitalWrite(InMotorA1, LOW); digitalWrite(InMotorA2, HIGH); digitalWrite(InMotorB1, LOW); digitalWrite(InMotorB2, HIGH); if (pwm<250) { pwm=pwm+50;} analogWrite(pwmMotorA, pwm); analogWrite(pwmMotorB, pwm); silnik_time = time + 500; } if(stan==0){ analogWrite(pwmMotorB,0); analogWrite(pwmMotorA,0); servo.write(angle=90); } else if (time >=silnik_time && stan==1) { unsigned long silnik_time = millis() + 500; analogWrite(pwmMotorA,200); analogWrite(pwmMotorB,200); digitalWrite(InMotorA1, LOW); digitalWrite(InMotorA2, HIGH); digitalWrite(InMotorB1, LOW); digitalWrite(InMotorB2, HIGH); silnik_time = time + 500;} } Timery w tym kodzie pomimo ich modyfikacji według Twojego drugiego wzoru działają ciągle tak samo czyli co 3 sekundy się załącza i wyłącza. Gdy usunąłem zerowanie TCCR1A = 0; wtedy zaczęło migać jak oszalałe co 0,1 s. Zmieniłem wartość OCR1B i dalej było to samo . Żadna liczba którą wpisałem do kodu w OCR1B nic nie zmieniała.
×