Author Topic: Контрола на Чекорен мотор со 16F628  (Read 2432 times)

Offline Gestak

  • Стручњак
  • ***
  • Posts: 240
  • Gender: Male
Откако ќе го завшиш кодот ставиго на форум да го видиме  :D ;D.Браво за сработеното !

Offline Devil

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 5329
  • Gender: Male
    • Македонски форум за електроника
се надевам дека ќе го завршам викендов :)
само ти треба да ми кажиш какви степ мотори ќе се користат, со точни информации
работен напон, колкав степен, каков тип на мотори се биполарни или какви (види таму колку жици имаат и кажи ми ако не знаеш поинаку :))
Jас не сум себичен, помагам. Помагај и ти !

Секоја куќа си има свои куќни правила.Почитувај ги куќните правила!

Offline Gestak

  • Стручњак
  • ***
  • Posts: 240
  • Gender: Male
Би требало да користам  биполарен со 4 жици и работен напон од 24V-35V но изгледа 24V ќе биде.

Offline Devil

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 5329
  • Gender: Male
    • Македонски форум за електроника
од кај најде?
од школо ќе земаш или имаш некој низ дома :)
Jас не сум себичен, помагам. Помагај и ти !

Секоја куќа си има свои куќни правила.Почитувај ги куќните правила!

Offline Gestak

  • Стручњак
  • ***
  • Posts: 240
  • Gender: Male
Од школо ќе земам за проба после ке си барам ;). Еве нешто околу кодот...
Code: [Select]
http://www.jasonbabcock.com/computing/breadboard/bipolar/index.html

Offline Devil

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 5329
  • Gender: Male
    • Македонски форум за електроника
Некој некаква идеа да не има  :-\
некако не му се работи на чудово  ;D

Code: [Select]
program Kontrola_test2_tasteri
Symbol LevoLED = PORTA.1
Symbol DesnoLED = PORTA.0
Symbol LevoT = PORTB.0
Symbol DesnoT = PORTB.3
main:
CMCON = 7                'Iskluci komparatori
VRCON = 0                'Konfiguracija na porti
INTCON = 0
PORTA = 0
TRISA = 0
PORTB = 0
TRISB = %11010000       'Konfiguracija za vlezno izlezni porti
'Komandi ako se pritisni Taster
if LevoT = 0
then goto Levo
else goto main
end if
Delay_ms(50)
if DesnoT = 0
then goto Desno
else goto main
end if
delay_ms(50)
goto main
'Od tuka na dolu se komandite za dvizenje na motorot

Levo:               'Komanda za vrtenjemotorot na Levo
LevoLED = 1
Delay_ms(25)
PORTB.4 = 1
Delay_ms(25)
PORTB.4 = 0
PORTB.5 = 1
Delay_ms(25)
PORTB.5 = 0
PORTB.6 = 1
Delay_ms(25)
PORTB.6 = 0
PORTB.7 = 1
Delay_ms(25)
PORTB.7 = 0
Delay_ms(25)
LevoLED = 0
Delay_ms(25)
goto main     'odi na pocetok ako zavrsi so programata

Desno:        'Komanda za vrtenje motorot na Desno
DesnoLED = 1
Delay_ms(25)
PORTB.7 = 1
Delay_ms(25)
PORTB.7 = 0
PORTB.6 = 1
Delay_ms(25)
PORTB.6 = 0
PORTB.5 = 1
Delay_ms(25)
PORTB.5 = 0
PORTB.4 = 1
Delay_ms(25)
PORTB.4 = 0
Delay_ms(25)
DesnoLED = 0
Delay_ms(25)
goto main   'odi na pocetok ako zavrsi so komandata
end.        'kraj na programata
Jас не сум себичен, помагам. Помагај и ти !

Секоја куќа си има свои куќни правила.Почитувај ги куќните правила!

Offline SKOLS_OLD

  • Топ Експерт
  • *****
  • Posts: 2782
  • Gender: Male
Одг: Контрола на Чекорен мотор со 16F628
« Reply #21 on 06.02.2011, Sunday, 10:45:38 (Edited 06.02.2011, Sunday, 10:48:34) »
моја препорака е во главната програма(Main) да го тргнеш тоа конфигурацијата ТРИСА и ТРИСБ,да ги ставиш над Main-от:
Code: [Select]
TRISA = 0
TRISB = %11010000       'Konfiguracija za vlezno izlezni porti
main:
CMCON = 7                'Iskluci komparatori
VRCON = 0                'Konfiguracija na porti
INTCON = 0
PORTA = 0
PORTB = 0
Потоа да провериш што вид на мотор е тој мотор.Дали е монофазен или е двофазен.
Трета работа кај што е тоа Десно команда и Лево иди вака:
Code: [Select]
Desno:        'Komanda za vrtenje motorot na Desno
DesnoLED = 1
Delay_ms(25)
PORTB.7 = 1
PORTB.6 = 0
PORTB.5 = 0
PORTB.4 = 0
Delay_ms(25) sleden cekor
PORTB.7 = 0
PORTB.6 = 1
PORTB.5 = 0
PORTB.4 = 0
Delay_ms(25) sleden cekor
PORTB.7 = 0
PORTB.6 = 0
PORTB.5 = 1
PORTB.4 = 0
Delay_ms(25) sleden cekor
PORTB.7 = 0
PORTB.6 = 0
PORTB.5 = 0
PORTB.4 = 1
Delay_ms(25) sleden cekor
PORTB.7 = 1
PORTB.6 = 0
PORTB.5 = 0
PORTB.4 = 0
Delay_ms(25)
DesnoLED = 0
Delay_ms(25)
goto main
(ova isto ke bide za levo,samo sto obratno)
Ова е за монофазен мотор.
Смени го во шемата стави отпорник со портите каде што се поврзани тастерите спрема +5волти ;)

Offline Devil

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 5329
  • Gender: Male
    • Македонски форум за електроника
Одг: Контрола на Чекорен мотор со 16F628
« Reply #22 on 06.02.2011, Sunday, 10:56:06 (Edited 06.02.2011, Sunday, 10:59:34) »
веќе е променато тоа со отпорниците, сега не ми е битен моторот пошто има само лед диоди поврзано па да видиме дали работаат, инаку командите за вртење се точни пошто веќе ги испробав, ама нема врска ќе пробам пак и вака да видма како ќе е
јас мислам дека нешто кај IF функциите не е во ред ама ќе препроверам
Jас не сум себичен, помагам. Помагај и ти !

Секоја куќа си има свои куќни правила.Почитувај ги куќните правила!

Offline SKOLS_OLD

  • Топ Експерт
  • *****
  • Posts: 2782
  • Gender: Male
Одг: Контрола на Чекорен мотор со 16F628
« Reply #23 on 06.02.2011, Sunday, 11:04:23 (Edited 06.02.2011, Sunday, 11:08:10) »
а провери користи ја наредбата BUTTON за тастерите.
Епа направи вака.Сега и ја забележав, наместо ова:
Code: [Select]
if LevoT = 0
then goto Levo
else goto main
end if
напиши вака:
Code: [Select]
if LevoT = 0
then Levo
end if

Offline Devil

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 5329
  • Gender: Male
    • Македонски форум за електроника
Одг: Контрола на Чекорен мотор со 16F628
« Reply #24 on 06.02.2011, Sunday, 11:39:14 (Edited 06.02.2011, Sunday, 11:45:18) »
неможи ни вака цело време го прескокнува левиот чекор
нешто со подесувањето на влезно излезните порти не чини, пошто на симулација што и да прицнам само десниот чекор оди правилно левиот не ни сака да го стартова..
ќе пробам со наредбите button ..

Наизменично работи сега со Button наредбата 2 порти одат високо ниво 2 ниско прескокнува се
оди на другата наредба за обратно пак 2 порти високо 2 ниско  ;D
како полициско светло е
ако некому му треба за таква работа ќе му го дам кодот  ;D
Jас не сум себичен, помагам. Помагај и ти !

Секоја куќа си има свои куќни правила.Почитувај ги куќните правила!

Offline SKOLS_OLD

  • Топ Експерт
  • *****
  • Posts: 2782
  • Gender: Male
а ти го направи за лево кодот обратно?Дека јас ти пишав како да оди десно,а не лево.Лево се ќе биде обратно.А вака да направиш.Истото горе што го пишав за конфигурација на портите.
Code: [Select]
CMCON = 7                'Iskluci komparatori
VRCON = 0                'Konfiguracija na porti
INTCON = 0
PORTA = 0
TRISA = 0
PORTB = 0
TRISB = %11010000       'Konfiguracija za vlezno izlezni porti
program Kontrola_test2_tasteri
Symbol LevoLED = PORTA.1
Symbol DesnoLED = PORTA.0
Symbol LevoT = PORTB.0
Symbol DesnoT = PORTB.3
main:
Маинот да биде доле и послем со Бутон командата да одиш.Провери го времето многу ти е кратко времето(Delay_ms(25)) стави го малце да биде поголемо.На пример 300мили секунди поради тоа што е кратко трајно тоа време човековото око нема да забележи.Исто така ај постави го кодот,да го видам.Ама тој новиот

Offline Devil

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 5329
  • Gender: Male
    • Македонски форум за електроника
го заприметив тоа и го сменав ама пак несака
како што сакаш ти  со конфигурацијата не може пошто мора командите тие Symbol да се први најгоре па после друго инаку вади ерор

Code: [Select]
program Kontrola_test3_tasteri
Symbol LevoLED = PORTA.1
Symbol DesnoLED = PORTA.0
Symbol LevoT = PORTB.0
Symbol DesnoT = PORTB.3
CMCON = 7                'Iskluci komparatori
VRCON = 0                'Konfiguracija na porti
INTCON = 0
PORTA = 0
TRISA = 0
PORTB = 0
TRISB = %11010000       'Konfiguracija za vlezno izlezni porti
main:
proverka1:
while true
  if Button(PORTB, 0, 1, 1) then
   goto proverka2
  end if
  if Button(PORTB, 0, 1, 0) then
    goto Levo
  end if
wend

proverka2:
while true
  if Button(PORTB, 3, 1, 1) then
   goto proverka1
  end if
  if Button(PORTB, 3, 1, 0) then
    goto Desno
  end if
wend
Levo:        'Komanda za vrtenje motorot na Desno
PORTA.0 = 1
Delay_ms(300)
PORTB.4 = 1
Delay_ms(300)
PORTB.4 = 0
PORTB.5 = 1
Delay_ms(300)
PORTB.5 = 0
PORTB.6 = 1
Delay_ms(300)
PORTB.6 = 0
PORTB.7 = 1
Delay_ms(300)
PORTB.7 = 0
Delay_ms(300)
PORTA.0 = 0
Delay_ms(300)
goto proverka2

Desno:
PORTA.1 = 1
Delay_ms(300)
PORTB.7 = 1
Delay_ms(300)
PORTB.7 = 0
PORTB.6 = 1
Delay_ms(300)
PORTB.6 = 0
PORTB.5 = 1
Delay_ms(300)
PORTB.5 = 0
PORTB.4 = 1
Delay_ms(300)
PORTB.4 = 0
Delay_ms(300)
PORTA.1 = 0
Delay_ms(300)
goto proverka1
end.

со оваа конфигурација се си е таман влезови ама пак не реагираат копчињата и ништо не работи овај пат :)
Jас не сум себичен, помагам. Помагај и ти !

Секоја куќа си има свои куќни правила.Почитувај ги куќните правила!

Offline SKOLS_OLD

  • Топ Експерт
  • *****
  • Posts: 2782
  • Gender: Male
а ај пробај вака.Каде што е таа команда Button наместо then Goto Proverka2 ти не пишувај goto изостави го.вака мислам
Code: [Select]
if Button(PORTB, 0, 1, 1) then
proverka2
end if
без Goto,дека ако го има повеќе пати тоа Goto може да се појави грешка.Ова го имам прочитано во книгата што ја имам јас во ПИЦБејзик,поубаво изостави го.

Offline Devil

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 5329
  • Gender: Male
    • Македонски форум за електроника
Одг: Контрола на Чекорен мотор со 16F628
« Reply #28 on 06.02.2011, Sunday, 13:06:50 (Edited 06.02.2011, Sunday, 13:08:32) »
знам и јас тоа го прочитав :)
чек сега средив работаат само копчињата и диодите кој покажуваат кое копче е притиснато

Code: [Select]
program Kontrola_test3_tasteri
Symbol LevoLED = PORTA.1
Symbol DesnoLED = PORTA.0
Symbol LevoT = PORTB.0
Symbol DesnoT = PORTB.3
CMCON = 7                'Iskluci komparatori
VRCON = 0                'Konfiguracija na porti
INTCON = 0
TRISB = %11010000       'Konfiguracija za vlezno izlezni porti
main:
PORTA = 0
TRISA = 0
PORTB = 0
proverka1:
while true
  if Button(PORTB, 0, 1, 1) then
   goto proverka2
  end if
  if Button(PORTB, 0, 1, 0) then
    goto Levo
  end if
wend

proverka2:
while true
  if Button(PORTB, 3, 1, 1) then
   goto proverka1
  end if
  if Button(PORTB, 3, 1, 0) then
    goto Desno
  end if
wend
Levo:        'Komanda za vrtenje motorot na Desno
PORTA.0 = 1
Delay_ms(25)
PORTB.4 = 1
Delay_ms(25)
PORTB.4 = 0
PORTB.5 = 1
Delay_ms(25)
PORTB.5 = 0
PORTB.6 = 1
Delay_ms(25)
PORTB.6 = 0
PORTB.7 = 1
Delay_ms(25)
PORTB.7 = 0
Delay_ms(25)
PORTA.0 = 0
Delay_ms(25)
goto proverka2

Desno:
PORTA.1 = 1
Delay_ms(25)
PORTB.7 = 1
Delay_ms(25)
PORTB.7 = 0
PORTB.6 = 1
Delay_ms(25)
PORTB.6 = 0
PORTB.5 = 1
Delay_ms(25)
PORTB.5 = 0
PORTB.4 = 1
Delay_ms(25)
PORTB.4 = 0
Delay_ms(25)
PORTA.1 = 0
Delay_ms(25)
goto proverka1
end.

со твојата команда вади ерор оти му е непозната функција не е ова PICBasic ова тие mikroBasic и командите му се различни не се исти
Jас не сум себичен, помагам. Помагај и ти !

Секоја куќа си има свои куќни правила.Почитувај ги куќните правила!

Offline SKOLS_OLD

  • Топ Експерт
  • *****
  • Posts: 2782
  • Gender: Male
Девил заврши ли?Го направи,доврши или...?