Македонски форум за електроника

Дигитална електроника => Микроконтролери => Topic started by: Devil on 03.02.2011, Thursday, 23:36:16

Title: Контрола на Чекорен мотор со 16F628
Post by: Devil on 03.02.2011, Thursday, 23:36:16
Во изработка ми е проект за контрола на чекорни мотори (за тие што незнаат какви се тоа чекорни мотори - stepper motor) со помош на 16F628
Не треба да е нешто сложено со еден куп додатоци, ми треба нешто ептем просто, така да зедов си дизајнирав по сопствени потреби :)
исто така во план е да може да се контролира преку компјутер (RS232), исто така има и надворешни тастерчиња преку кој може да се движи на одредена страна само по 1 чекор (ќе видам можеби ќе го сменам и тоа) а преку компјутерот може да се внесе колку круга сакате да заврти..
Во тек е изработката на софтверот за пикот, кога ќе завршам ќе ја ставам и неа :)

Сега засега само идеата ми е готова  ;D, се надевам дека викендов ќе успеам да стигнам до негде со изработката на фирмверот
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: SKOLS_OLD on 03.02.2011, Thursday, 23:42:50
а програма за на ПЦ имаш некоја?Или некој РС232 терминал ќе користиш?
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: Devil on 03.02.2011, Thursday, 23:43:59
преку терминал ќе оди, од пикот испраќа информаци и со помош на тие информации ти му пишиш што треба да направи
сега за сега ќе биде со терминал, работам на некој проект за VB апликации ама ќе видиме  ;D
некако тешко оди ова комуникацијата :), не можам да се снајдам  :-\
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: SKOLS_OLD on 04.02.2011, Friday, 13:45:57
а во што имаш напишано програмата,ако може да поставиш кодот!
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: Devil on 04.02.2011, Friday, 13:54:14
SmallBasic, не ми е сеуште напишана, не можам да се снајдам со кодот :)
не можам да најдам како оди комуникацијата со серискиот порт :(
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: SKOLS_OLD on 04.02.2011, Friday, 13:55:47
каква е таа SmallBasic?Да не е МикроБејзик на микроелектроника? :-\
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: Devil on 04.02.2011, Friday, 13:58:54
не нешто на микрософт и уште една некоја фирма е нешто како упростена верзија на VB
поедноставна малку прилично лесна за користење, ако сакаше нешто просто да направиш
викаат прилично моќна програма била, гледам и тетрис имаат правено во неа :)
само што ете нема многу туторијали како што ..
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: Bojan on 04.02.2011, Friday, 15:00:49
аааах...а зашто не ја користиш шемата од борче???
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: Devil on 04.02.2011, Friday, 15:16:17
Која шема ?
дај линк, плус то вака поинтересно и полесно ми е, сам ќе си наместам се какко што ми одговара најмногу
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: Bojan on 04.02.2011, Friday, 16:02:49
Code: [Select]
http://elektronika-mk.net/index.php?topic=266.0
повели газда :D
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: Devil on 04.02.2011, Friday, 16:37:04
не бе ова не ми одговара ваква работа :)
плус то веќе стигнав до негде со програмата, сега работам на контролата, начинот на „придвижување“ по инпулси е готов, сега работам на контрола со тастерите (напред назад) и контролата со серискиот порт ќе остани последна :)
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: Bojan on 04.02.2011, Friday, 16:44:09
и што со тастерите па, може тастерите да се употребуваат на истите влезови што ке се и за паралелната порта...
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: Devil on 04.02.2011, Friday, 16:50:08
а оти да се користи така кога е ептем просто, зошто да се усложува цел проект толку ?
треба да се местат интераптс па глупости ..
вака местиш тие пинови влезни и кога има 0 дигитално ниво извршува нешто, ако е на Вцц нема да реагира и тераш :)
ако беше за така може да се користи внатрешен осцилатор зошто да користам надворешен.. поедноставно е ;D
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: SKOLS_OLD on 04.02.2011, Friday, 18:12:00
и што со тастерите па, може тастерите да се употребуваат на истите влезови што ке се и за паралелната порта...
за каква паралелна порта збориш?Да не мислиш на сериска.Доколку за сериската порта мислиш преку нејзе се пренесуваат податоци сериски,но ти неможе да ставиш тастери на таа сериска порта :)
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: Bojan on 04.02.2011, Friday, 20:15:29
и што со тастерите па, може тастерите да се употребуваат на истите влезови што ке се и за паралелната порта...
за каква паралелна порта збориш?Да не мислиш на сериска.Доколку за сериската порта мислиш преку нејзе се пренесуваат податоци сериски,но ти неможе да ставиш тастери на таа сериска порта :)


аааа, грешка сум прочитал, мислев дека збори за паралелна порта...моја грешка е...
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: Gestak on 04.02.2011, Friday, 21:56:48
Откако ќе го завшиш кодот ставиго на форум да го видиме  :D ;D.Браво за сработеното !
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: Devil on 04.02.2011, Friday, 22:03:11
се надевам дека ќе го завршам викендов :)
само ти треба да ми кажиш какви степ мотори ќе се користат, со точни информации
работен напон, колкав степен, каков тип на мотори се биполарни или какви (види таму колку жици имаат и кажи ми ако не знаеш поинаку :))
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: Gestak on 04.02.2011, Friday, 22:08:44
Би требало да користам  биполарен со 4 жици и работен напон од 24V-35V но изгледа 24V ќе биде.
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: Devil on 04.02.2011, Friday, 22:11:05
од кај најде?
од школо ќе земаш или имаш некој низ дома :)
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: Gestak on 04.02.2011, Friday, 22:14:20
Од школо ќе земам за проба после ке си барам ;). Еве нешто околу кодот...
Code: [Select]
http://www.jasonbabcock.com/computing/breadboard/bipolar/index.html
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: Devil on 05.02.2011, Saturday, 22:25:22
Некој некаква идеа да не има  :-\
некако не му се работи на чудово  ;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
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: SKOLS_OLD on 06.02.2011, Sunday, 10:45:38
моја препорака е во главната програма(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волти ;)
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: Devil on 06.02.2011, Sunday, 10:56:06
веќе е променато тоа со отпорниците, сега не ми е битен моторот пошто има само лед диоди поврзано па да видиме дали работаат, инаку командите за вртење се точни пошто веќе ги испробав, ама нема врска ќе пробам пак и вака да видма како ќе е
јас мислам дека нешто кај IF функциите не е во ред ама ќе препроверам
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: SKOLS_OLD on 06.02.2011, Sunday, 11:04:23
а провери користи ја наредбата BUTTON за тастерите.
Епа направи вака.Сега и ја забележав, наместо ова:
Code: [Select]
if LevoT = 0
then goto Levo
else goto main
end if
напиши вака:
Code: [Select]
if LevoT = 0
then Levo
end if
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: Devil on 06.02.2011, Sunday, 11:39:14
неможи ни вака цело време го прескокнува левиот чекор
нешто со подесувањето на влезно излезните порти не чини, пошто на симулација што и да прицнам само десниот чекор оди правилно левиот не ни сака да го стартова..
ќе пробам со наредбите button ..

Наизменично работи сега со Button наредбата 2 порти одат високо ниво 2 ниско прескокнува се
оди на другата наредба за обратно пак 2 порти високо 2 ниско  ;D
како полициско светло е
ако некому му треба за таква работа ќе му го дам кодот  ;D
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: SKOLS_OLD on 06.02.2011, Sunday, 12:45:04
а ти го направи за лево кодот обратно?Дека јас ти пишав како да оди десно,а не лево.Лево се ќе биде обратно.А вака да направиш.Истото горе што го пишав за конфигурација на портите.
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мили секунди поради тоа што е кратко трајно тоа време човековото око нема да забележи.Исто така ај постави го кодот,да го видам.Ама тој новиот
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: Devil on 06.02.2011, Sunday, 12:58:54
го заприметив тоа и го сменав ама пак несака
како што сакаш ти  со конфигурацијата не може пошто мора командите тие 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.

со оваа конфигурација се си е таман влезови ама пак не реагираат копчињата и ништо не работи овај пат :)
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: SKOLS_OLD on 06.02.2011, Sunday, 13:03:30
а ај пробај вака.Каде што е таа команда Button наместо then Goto Proverka2 ти не пишувај goto изостави го.вака мислам
Code: [Select]
if Button(PORTB, 0, 1, 1) then
proverka2
end if
без Goto,дека ако го има повеќе пати тоа Goto може да се појави грешка.Ова го имам прочитано во книгата што ја имам јас во ПИЦБејзик,поубаво изостави го.
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: Devil on 06.02.2011, Sunday, 13:06:50
знам и јас тоа го прочитав :)
чек сега средив работаат само копчињата и диодите кој покажуваат кое копче е притиснато

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 и командите му се различни не се исти
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: SKOLS_OLD on 08.02.2011, Tuesday, 19:16:35
Девил заврши ли?Го направи,доврши или...?
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: Devil on 08.02.2011, Tuesday, 21:35:35
не, не можам да најдам кај е проблемот деновиве ќе почнам од почеток чекор по чекор да го пишувам
пробав сите можни варијанти нема врска де работи де не работи :(
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: SKOLS_OLD on 08.02.2011, Tuesday, 21:40:48
вака сега,сумњам дека имаш грешка,каде што ти е поврзан степ моторот.Зошто во програмата го пишуваш ова?-
Code: [Select]
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)
истото важи и за обратно т.е. да врти моторот лево јас ти наведов во подолните постови,а ти проба ли така??Зборам за ова
Code: [Select]
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)
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: Devil on 08.02.2011, Tuesday, 21:44:29
пробав така не работи, како што го напишав јас без контрола со тастери си работи нормално
проблем е во контролата со тастерите не во движењето на моторот
пробав со готовите библиотеки за копчиња и со ним не работи
ќе се обратам деновиве до микроелектроника да видиме тие што ќе речеат :)
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: SKOLS_OLD on 14.02.2011, Monday, 11:44:27
Девил заврши ли?Го направи ова чудо или се мачиш со тоа контролата на моторот?
Title: Одг: Контрола на Чекорен мотор со 16F628
Post by: Devil on 14.02.2011, Monday, 20:43:07
не се ни обидов од последниот пат :)
имав нешто друга работа така да не стигнав :(