Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

robot - czolg - sterowany rc5 (pilot ir) + dodatki

wader_669 06 Mar 2007 21:44 19946 40
  • #1 06 Mar 2007 21:44
    wader_669
    Poziom 28  

    pierwsze co zrobilem:
    zmierzylem adresy i komendy poszczegolnych guzikow pilota (zabralem go od telewizora)
    tu jest schemat (attiny2313 lub at90s2313, czujniki ir - tsop1736, wyswietlacz lcd alfanumeryczny dzialajacy w standardzie hd44780) zalanczam tez kod
    robot - czolg - sterowany rc5 (pilot ir) + dodatki

    kod oczywiscie w basomie

    Code:


    $crystal = 8000000

    Config Lcd = 24 * 2
    Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , E = Portb.6 , Rs = Portb.7
    Config Pind.5 = Output
    Config Rc5 = Pind.6
    Dim Address As Byte , Command As Byte
    Enable Interrupts

    Do
    Getrc5(address , Command)
    Command = Command And &B01111111
    Cls
    Lcd "adres: " ; Address

    Lowerline
    Lcd "komenda: " ; Command

    Waitms 100

    Loop
    End


    Uwaga:
    jak sie pojawia na poczatku komenda 255 i adres jakis tam (nie pamietam) to dobrze
    jak wam pilot nie dziala to nie znaczy ze cos nie dziala, powod moze byc taki ze pilot dziala w rc6 lub standardzie sony a nie rc5

    nastepnie budujemy robota
    nie trzeba uzywac tego mostka (moj mostek jest bez pwm)
    Nie trzeba uzywac stabilizatora napiecie jak ma sie zasilanie ponizej 5v
    robot - czolg - sterowany rc5 (pilot ir) + dodatki

    Code:

    $crystal = 8000000

    Config Portb.0 = Output
    Config Portb.1 = Output
    Config Portb.2 = Output
    Config Portb.3 = Output
    Config Rc5 = Pind.6
    Dim Address As Byte , Command As Byte
    Enable Interrupts

    Do
    Getrc5(address , Command)
    Command = Command And &B01111111
    If Address = 0 And Command = 7 Then                             'tu wpisac adres i komende guzika dla ktorego ma robot jechac do przudu'
    Portb.0 = 1
    Portb.1 = 0
    Portb.2 = 0
    Portb.3 = 1
    End If
    If Address = 0 And Command 6 = Then                             'tu wpisac adres i komende guzika dla ktorego ma robot jechac do tylu'




    Portb.0 = 0
    Portb.1 = 1
    Portb.2 = 1
    Portb.3 = 0
    End If                                                      'tu wpisac adres i komende guzika dla ktorego ma robot jechac do prawo'
    If Address = 0 And Command 4 = Then
    Portb.0 = 0
    Portb.1 = 0
    Portb.2 = 0
    Portb.3 = 1
    End If                                                      'tu wpisac adres i komende guzika dla ktorego ma robot jechac do lewo'
    If Address = 0  And Command = 5 Then
    Portb.0 = 1
    Portb.1 = 0
    Portb.2 = 0
    Portb.3 = 0
    End If                                                      'tu wpisac adres i komende guzika dla ktorego jedno kolo robota bedzie sie krecic do przodu a drugie do tylu '
    If Address = 0 And Command = 2 Then
    Portb.0 = 1
    Portb.1 = 0
    Portb.2 = 1
    Portb.3 = 0
    End If
    If Address = 0 And Command = 1 Then                             ' to samo tylko odwrotnie'
    Portb.0 = 0                                               
    Portb.1 = 1
    Portb.2 = 0
    Portb.3 = 1
    If Address = 0 And Command = 5 Then  ' mozna dodac jeszcze komende stop'
    Portb.0 = 0
    Portb.1 = 0
    Portb.2 = 0
    Portb.3 = 0
    End If
    Loop
    End

    ten kod jest przezmnie pisany wiec prawdopodobnie znajduje sie tu duzo niepotrzebnych rzeczy ktore zabieraja pamiec.

    ktos mnie poprosil zebym podal schemat i kod jak zrobic pilota do tego robota.
    mam tutaj 2 nadajniki powinny obydwa dzialac ale nie wiem czy ktorys z nich dziala :D

    robot - czolg - sterowany rc5 (pilot ir) + dodatki

    robot - czolg - sterowany rc5 (pilot ir) + dodatki

    robot - czolg - sterowany rc5 (pilot ir) + dodatki


    Code:

    $regfile = "attiny2313.dat"
    $crystal = 8000000

    config pinb.7 = input
    config pinb.6 = input
    config pinb.5 = input
    config pinb.4 = input
    config pinb.3 = input
    config pinb.2 = input
    config pinb.1 = input
    config pind.5 = output

    Dim Togbit As Byte , Command As Byte , Address As Byte

    do
    debounce pinb.7 , 0 , prosto , sub
    debounce pinb.6 , 0 , tyl , sub
    debounce pinb.5 , 0 , lewo , sub
    debounce pinb.4 , 0 , prawo , sub
    Debounce Pinb.3 , 0 , Stopp , Sub
    Debounce Pinb.2 , 0 , Baczekl , Sub
    Debounce Pinb.1 , 0 , Baczekp , Sub
    loop
    end

    Prosto:

    Command = 1
    Togbit = 0
    address = 0
    do

    Rc5send Togbit , Address , Command
    Waitms 250
    Loop Until Pinb.7 = 1
    Return

    Tyl:

    Command = 2
    togbit = 0
    Address = 0
    do

    Rc5send Togbit , Address , Command
    Waitms 250
    Loop Until Pinb.6 = 1
    Return

    Lewo:

    Command = 3
    togbit = 0
    Address = 0
    do

    Rc5send Togbit , Address , Command
    Waitms 250
    Loop Until Pinb.5 = 1
    Return

    Prawo:

    Command = 4
    togbit = 0
    Address = 0
    do

    Rc5send Togbit , Address , Command
    Waitms 250
    Loop Until Pinb.4 = 1
    Return

    Stopp:

    Command = 5
    togbit = 0
    Address = 0
    do

    Rc5send Togbit , Address , Command
    Waitms 250
    Loop Until Pinb.3 = 1
    Return

    Baczekl:

    Command = 6
    togbit = 0
    Address = 0
    do

    Rc5send Togbit , Address , Command
    Waitms 250
    Loop Until Pinb.2 = 1
    Return

    Baczekp:

    Command = 7
    togbit = 0
    Address = 0
    do

    Rc5send Togbit , Address , Command
    Waitms 250
    Loop Until Pinb.1 = 1
    Return


    dodaje jeszcze funkcje linefollow musicie troche poczekac bo 2 procki mi sie popsuly ale dodaje juz schemat.
    ja uzyje tylko 2 diody ir nadawcze i odbiorcze


    robot - czolg - sterowany rc5 (pilot ir) + dodatki


    mozna tez zastosowac czujniki QRD 1114

    0 29
  • Pomocny post
    #2 15 Mar 2007 17:46
    bogdan_p
    Poziom 39  

    Cytat:
    Nie trzeba uzywac stabilizatora napiecie jak ma sie zasilanie ponizej 5v

    nie polecam takiego rozwiązania , wraz z spadkiem napięcia zasilania zmieniają się parametry szczególnie jeżeli chodzi o układ na komparatorach , do tego dochodzą spadki napięcia wywołane pracą silników
    dlatego lepiej zastosować stabilizator dla U=5V

    0
  • #3 16 Mar 2007 20:53
    pukury
    Poziom 35  

    witam !! dzięki ! myślę że coś się uda z tego " wystrugać " . tak patrzę sobie i mam pytanie - czy w ostatniej sekwencji w kodzie do odbiornika nie powinny być zera zamienione z jedynkami ( jest taka sama jak w poprzedniej pozycji ) . pozdrawiam !!

    0
  • #4 16 Mar 2007 21:04
    Mat_91
    Poziom 25  

    nom super tylko mam takie pytanie. chodzi o pierwszy i drugi schamet. obydwa działają ci na jednym scalaku czy to są dwie oddzielne rzeczy?? (chodzi mi o ten scalak 20 pinowy). jeżeli 2 oddzielne to tą częśc z wyświetlaczem można pominąc?? bedzie działało bez tego??

    0
  • #5 16 Mar 2007 22:00
    bogdan_p
    Poziom 39  

    Mat_91 to o 20 nóżkach nazywa się mikroprocesor , dokładnie Attiny 2313
    schematy masz 3 :
    - tester instrukcji kodu rc 5
    - sterownik robota + mostek H (L293D)
    - pilot kodu rc 5

    0
  • #6 16 Mar 2007 22:08
    Mat_91
    Poziom 25  

    to że to jest microprocesor to akurat wiedziałem;] przepraszam jeżeli źle się wyraziłem. Czyli jeżeli chce zrobic samo sterowanie to ten pierwszy schemat mogę ominąc?? zgadza się??

    0
  • #7 16 Mar 2007 22:22
    bogdan_p
    Poziom 39  

    tak , proponuje poczytaj sobie na temat mikrokontrolerów jest odpowiednie forum na Elektrodzie

    0
  • #8 16 Mar 2007 22:27
    Mat_91
    Poziom 25  

    ok. dzięki. a co do schematu to mam jeszcze takie pytanie: jaki musze użyc kondensator i rezystor do tej diody IR oraz jaki rezonator kwarcowy do pinow 4 i 5 oraz jakie tam są kondensatory?? Bo w tych miejscach nie ma wypisanych wartości...:/

    1
  • #10 17 Mar 2007 16:19
    wader_669
    Poziom 28  

    nie dalem tam zadnych wartosci bo to sa rozne odbiorniki ir jak wykorzystujesz tsop1736 to masz napisane w datasheet'cie jakia wartos ma rezystor i kondensator

    Dodano po 3 [minuty]:

    pukury napisał:
    czy w ostatniej sekwencji w kodzie do odbiornika nie powinny być zera zamienione z jedynkami ( jest taka sama jak w poprzedniej pozycji ) . pozdrawiam !!


    masz racje sorry za blad juz poprawilem

    0
  • Pomocny post
    #11 31 Lip 2007 17:03
    mardar
    Poziom 21  

    wader_669 napisał:



    Code:

    $crystal = 8000000

    Config Portb.0 = Output
    Config Portb.1 = Output
    Config Portb.2 = Output
    Config Portb.3 = Output
    Config Rc5 = Pind.6
    Dim Address As Byte , Command As Byte
    Enable Interrupts

    Do
    Getrc5(address , Command)
    Command = Command And &B01111111
    If Address = 0 And Command = 7 Then                             'tu wpisac adres i komende guzika dla ktorego ma robot jechac do przudu'
    Portb.0 = 1
    Portb.1 = 0
    Portb.2 = 0
    Portb.3 = 1
    End If
    If Address = 0 And Command 6 = Then                             'tu wpisac adres i komende guzika dla ktorego ma robot jechac do tylu'
    Portb.0 = 0
    Portb.1 = 1
    Portb.2 = 1
    Portb.3 = 0
    End If                                                      'tu wpisac adres i komende guzika dla ktorego ma robot jechac do prawo'
    If Address = 0 And Command 4 = Then
    Portb.0 = 0
    Portb.1 = 0
    Portb.2 = 0
    Portb.3 = 1
    End If                                                      'tu wpisac adres i komende guzika dla ktorego ma robot jechac do lewo'
    If Address = 0  And Command = 5 Then
    Portb.0 = 1
    Portb.1 = 0
    Portb.2 = 0
    Portb.3 = 0
    End If                                                      'tu wpisac adres i komende guzika dla ktorego jedno kolo robota bedzie sie krecic do przodu a drugie do tylu '
    If Address = 0 And Command = 2 Then
    Portb.0 = 1
    Portb.1 = 0
    Portb.2 = 1
    Portb.3 = 0
    End If
    If Address = 0 And Command = 1 Then                             ' to samo tylko odwrotnie'
    Portb.0 = 0                                               
    Portb.1 = 1
    Portb.2 = 0
    Portb.3 = 1
    If Address = 0 And Command = 5 Then  ' mozna dodac jeszcze komende stop'
    Portb.0 = 0
    Portb.1 = 0
    Portb.2 = 0
    Portb.3 = 0
    End If
    Loop
    End


    Witam i przepraszam za "orzywianie trupa" ale mam pytanie. Użyłem magicznej kombinacji Ctrl+C , Ctrl+V i wkleiłem ten kodzik do bascoma. Potem standardowo sprawdzanie składni i ... tu msm kłopot bo bascom wywala mi błędy: robot - czolg - sterowany rc5 (pilot ir) + dodatki
    Tak więc czy to mój bascom jest do d..y czy z kodem jest coś nie tak? ewentualnie jak ktoś może to niech podeśle mi gotowy skompilowany kod na pw

    0
  • #13 01 Sie 2007 15:33
    mardar
    Poziom 21  

    ok, dzięki, czekam:)
    Ps. ten kodzik przesłałem dla kumpla żeby skompilował to też sypały się błędy:/

    0
  • #14 04 Gru 2007 12:34
    wader_669
    Poziom 28  

    kod moze naprawde jest zly ale w zalczniku jest poprawny

    0
  • #15 17 Gru 2007 21:38
    neoswat
    Poziom 14  

    Witam. Ja mam następujące pytanie. Czy konieczna jest sesja odczytywania i przepisywania kodów rc5 z pilota czy można do bascom'a wstawić losowe komendy i adresy ? Posiadam w domu programowalny pilot uniwersalny - czy nada się? Jak tak to próbować ustawić obsługę jakich urządzeń jakich producentów? Jeżeli moje myślenie jest błędne to mnie poprawcie. Z Góry dzięki. Pozdrawiam

    0
  • Pomocny post
    #16 17 Gru 2007 22:02
    bogdan_p
    Poziom 39  

    podstawowa sprawa czy pilot nadaje w kodzie RC5 i na jakiej nośnej , typowa to 36kHz ale to nie reguła , wszystko na temat Bascoma i RC5 masz tu http://edw.com.pl/pdf/k10/54_05.pdf

    0
  • #17 18 Gru 2007 14:43
    neoswat
    Poziom 14  

    Przydatna lektura:D Zatem czy dobrze rozumiem, że jak sie ma zamiar nie używać gotowego pilota tylko samodzielnie napisać program to można i w nadajniku i w odbiorniku napisać dowolne komendy i adresy jakie się chce? Wyczytałem, że jest 32 komendy i 64 adresy. Pozdrawiam

    0
  • Pomocny post
    #18 18 Gru 2007 21:36
    bogdan_p
    Poziom 39  

    aby wszystko było jasne :

    Cytat:
    Nadajniki pracujące według standardu RC5 transmitują 14-bitowe słowa danych, kodowane w formacie bi-phase, zwanym także kodem Manchester.
    Pierwsze dwa bity słowa są zawsze jedynkami i tworzą razem sygnał startu. Następny bit jest bitem kontrolnym, zmienianym w kolejnych nadawanych słowach, gdy użytkownik przytrzyma klawisz pilota – umożliwia to powtarzanie komend. Kolejne 5 bitów reprezentuje adres urządzenia, które ma być właściwym odbiornikiem transmisji. Dla przykładu: odbiorniki telewizyjne maja zazwyczaj adres 0, a magnetowidy adres 5. Ostatnie 6 bitów reprezentuje jedną z 64 możliwych komend.

    jeżeli samodzielnie zbudujesz układ oparty o kod RC5 to jest to zupełnie dowolne jakie wykorzystasz rozkazy ważne aby były one zgodne z standardem

    0
  • #19 18 Gru 2007 23:47
    neoswat
    Poziom 14  

    Wielkie dzięki. O taką odpowiedź mi chodziło. Pozdrawiam.

    0
  • #20 19 Gru 2007 17:25
    neoswat
    Poziom 14  

    Mam jeszcze małe pytanko :) Na jaką odległość działa ten układ?

    0
  • Pomocny post
    #21 01 Sty 2008 18:45
    misiek1994
    Poziom 17  

    Nie jestem pewien ale znalazłem drobny błąd: w kodzie nadajnika jest zaznaczone portd.5 = output. Nawet laik zrozumie, że jeżeli tranzystor chce do kontrolera wepchnąć prąd, a kontroler chce go wypchnąć (out) to układ nie będzie działał. Chodzi mi oczywiście o drugą wersję nadajnika. Niestety na naszym forum jest wielu początkujących, którzy robią urządzenie nie patrząc nawet na schemat, dlatego też przydałoby się zmodyfikować program. Przecież nie chcemy ich zniechęcić do zabawy z elektroniką (wiem jak to jest mam dopiero 14 lat)!!!

    PS: Jakby co to proszę mnie poprawić.

    Dodano po 10 [minuty]:

    Acha jeszcze jedno: czy w czytniku rc5 tiny2313 nie wymaga zasilania (5v na VCC), bo jak widzę to jest ono tylko na linie reset?!

    0
  • #22 02 Sty 2008 09:50
    wader_669
    Poziom 28  

    powiem szczerze ze nie budowalem tego nadajnika tylko korzystalem z pilota od tv.
    co do zasilania oczywiscie ze musisz podac zasilanie na vcc. Jest to blad ale nie bede wszystkich poprawiac, ludzie powinni sie nauczyc samemu myslec a nie jak malpy kopiowac uklad.

    po 2
    oto wiadomosc jaka otrzymuje gdy chce edytowac post

    "Informacja

    Niestety wiadomość jest zbyt stara aby można ją było edytować"

    wiec mozesz sam poprawic kod

    0
  • Pomocny post
    #23 06 Sty 2008 14:45
    misiek1994
    Poziom 17  

    Zauważyłem jeszcze coś: piny b.1-b.7 są nastawione na wejście i równocześnie podłączone do masy. Trzeba przestawić na "output:.

    0
  • Pomocny post
    #24 09 Sty 2008 18:21
    misiek1994
    Poziom 17  

    I jeszcze dla początkujących: zamiast l293d można użyć l293b, lecz trzeba pamiętać, by pin nr.8 podłączyć do + a nie do - .

    0
  • #25 09 Sty 2008 23:44
    wader_669
    Poziom 28  

    zawsze chcialem wstawic fotki robota ale nigdy nie mialem czasu albo mialem lenia wiec teraz wstawiam
    oto robot ktorego zbudwalem okolo rok temu


    robot - czolg - sterowany rc5 (pilot ir) + dodatki

    robot - czolg - sterowany rc5 (pilot ir) + dodatki

    robot - czolg - sterowany rc5 (pilot ir) + dodatki

    jak widac skladal sie z paru plytek: podstawowe- to byly plytka z procesorem ,z mostkiem h i ze stabilizatorem napiecia. pozniej dolaczylem jeszcze komparator

    uklad zasilajacy
    robot - czolg - sterowany rc5 (pilot ir) + dodatki

    mostek h
    robot - czolg - sterowany rc5 (pilot ir) + dodatki

    procesor:
    robot - czolg - sterowany rc5 (pilot ir) + dodatki

    0
  • #26 10 Sty 2008 17:12
    misiek1994
    Poziom 17  

    Mam jeszcze pytanie: wiem, że przy odbiorniku trzeba dać kondensator (10uF), ale czy też konieczny jest rezystor?

    0
  • Pomocny post
    #27 10 Sty 2008 17:27
    bogdan_p
    Poziom 39  

    Cytat:
    I jeszcze dla początkujących: zamiast l293d można użyć l293b, lecz trzeba pamiętać, by pin nr.8 podłączyć do + a nie do - .

    misiek1994 jeżeli już coś radzisz to zastanów się L293 ( bez wzgledu na wersję ) dla DIL 16 końcówka 8 to zawsze zasilanie stopnia mocy i zawsze łączy się ją z plusem , jeżeli stosujesz inną wersją niż "D" to wymagane jest zastosowanie diod zabezpieczających

    0
  • #28 10 Sty 2008 18:48
    misiek1994
    Poziom 17  

    Ok. Sory, masz rację, jednakże na schemacie pin nr. 8 jest do minusa - chodziło mi o to, żeby podłączyć go do plusa. Przejęzyczyłem się. A co do wersji b to wydawało mi się, że producent już wpadł na pomysł, by im tam wstawić diody. W każdym razie przepraszam.

    Dodano po 2 [minuty]:

    Acha, jeszcze jedno: wader, nie dało rady wsadzić tych wszystkich elementów na jednej płytce? Jak na mnie to troche to za duże.

    0
  • Pomocny post
    #29 10 Sty 2008 20:44
    bogdan_p
    Poziom 39  

    Cytat:
    jednakże na schemacie pin nr. 8 jest do minusa

    na którym schemacie ?
    schemat kol. wader_669 jest poprawny

    0
  • #30 10 Sty 2008 21:57
    wader_669
    Poziom 28  

    misiek1994 napisał:

    Acha, jeszcze jedno: wader, nie dało rady wsadzić tych wszystkich elementów na jednej płytce? Jak na mnie to troche to za duże.

    dalo by rade ale byl to typowo robot do nauki. NP. jak chcialem zmienic procesor na inny wystarczylo ze wymienie tylko jedna plytke, nie musialem calego schematu od nowa lutowac

    0
  Szukaj w 5mln produktów