logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Atmega8][Bascom] prosty sterownik silników i kilka pytań...

mardar 30 Sie 2009 12:42 1822 3
REKLAMA
  • #1 6960206
    mardar
    Poziom 21  
    Witam. Postanowiłem zrobić prosty sterownik 2 silników, pod ręką miałem tylko atmege i bascoma, ze względu na to że dawno się tym nie bawiłem mam kilka pytań, o których później...
    Tu jest schemat: [Atmega8][Bascom] prosty sterownik silników i kilka pytań...

    a tu kod:
    $regfile = "m8def.dat"                                      'Konfiguracja modelu mikrokontrolera. (ATmega8)
    $crystal = 1000000                                          'Konfiguracja Częstotliwości taktowania procesora. (1MHz)
    
    
    Config Portb = Output
    Portb = &B11110101
    Config Portc = Output
    Portc = &B1110101
    Config Portd = Input
    Portd = &B11111111
    
    Do
    If Pind.0 = 0 Then Portb = &B11110011                       '1 i 6 tranzystor on
    If Pind.1 = 0 Then Portb = &B11111100                       '2 i 5 tranzystor on
    If Pind.2 = 0 Then Portc = &B1110011                        '3 i 8 tranzystor on
    If Pind.4 = 0 Then Portc = &B1111100                        '4 i 7 tranzystor on


    Zasada działania ma być prosta... Do gniazda po lewej stronie conn5 podpięte są 4 przyciski zwierające te piny do masy. podanie masy na pind.0 powinno skutkować załączeniem się 1 i 6 tranzystora. Podanie masy na pind.1 powinno skutkować uruchomieniem się 2 i 5 tranzystora... itd... ale z tego co się orientuję to po puszczeniu przycisku to stany na wyjściach się "zapamiętują" i zostają... a ja chce żeby po puszczeniu danego przycisku stan na portach b i c wracał do wcześniej zadeklarowanego...
    Teraz pytania:
    1. Czy schemat jest mniej więcej dobry?
    2. Czy aby osiągnąć swój cel mam zastosować instrukcje waitms?
    3. Czy jest inny sposób żeby uzyskać zamierzony cel?
    4. Czy mój tok myślenia jest do bani i koncepcja nie ma racji bytu...:)
  • REKLAMA
  • #2 6960333
    pmmisiek
    Poziom 15  
    Witam,

    może spróbuj dodać else, po else powinien być stan portów taki jak przed naciśnięciem przycisku.

    
    $regfile = "m8def.dat"                                      'Konfiguracja modelu mikrokontrolera. (ATmega8)
    $crystal = 1000000                                          'Konfiguracja Częstotliwości taktowania procesora. (1MHz)
    
    
    Config Portb = Output
    Portb = &B11110101
    Config Portc = Output
    Portc = &B1110101
    Config Portd = Input
    Portd = &B11111111
    
    Do
    If Pind.0 = 0 Then Portb = &B11110011 Else Portb = &B11110101
    If Pind.1 = 0 Then Portb = &B11111100 Else Portb = &B11110101                      
    If Pind.2 = 0 Then Portc = &B1110011 Else Portc = &B1110101                       
    If Pind.4 = 0 Then Portc = &B1111100 Else Portc = &B1110101        
    


    Pozdrawiam
  • REKLAMA
  • #3 6960373
    mirekk36
    Poziom 42  
    czy nie lepiej by było gdybyś bazy tranzystorów pojedyńczego mostka H (oczywiście za rezystorami już od strony uC) połączył ze sobą? żeby jeden mostek sterować tylko 2 liniami a nie 4 tak jak teraz ???? przecież w takim układzie jak teraz - jedna mini pomyłka w programie i robisz duże kuku swoim tranzystorom w mostku . Poza tym miałbyś mniej linii sterującyh zajętych w procku.

    a tabela sterowania byłaby prosta jak drut:

    00 - hamowanie
    01 - lewo
    10 - prawo
    11 - hamowanie

    czyli dużo bezpieczniej i o wiele prościej niż teraz jest - także w programie

    (poza tym spójrz sobie na scalak L293D - czy może nie warto z niego skorzystać zamiast samemu budować takie mostki - to byłoby jeszcze prostsze i jeszcze bezpieczniejsze)
  • #4 6960390
    mardar
    Poziom 21  
    W sumie połączenie baz to dobry pomysł:D A jeśli chodzi o scalak ten to kombinowałem żeby go użyć, ale musiałbym specjalnie około 40km w jedną stronę zrobić żeby go dostać a i to nie wiadomo czy go dostane... a na tranzystorach mam kilka mostków już gotowych:] Z tym kodem to się spróbuje.
REKLAMA