Мазмуну:
- 1 -кадам: Иштөө принциби
- 2 -кадам: Иштөө принциби Конт
- 3 -кадам: Иш жүзүндө ажыратуу 1
- 4 -кадам: Иш жүзүндө ажыратуу 2
- 5 -кадам: Иш жүзүндө ажыратуу 3
- 6 -кадам: Иш жүзүндө ажыратуу 4
- 7 -кадам: Иш жүзүндө ажыратуу 5
- 8 -кадам: Иш жүзүндө ажыратуу 6
- 9 -кадам: Дубал саатын колдонуу мисалдары
- 10 -кадам: Wall Clock колдонуу мисалдары PIC
- 11 -кадам: Дубал саатын колдонуу мисалдары Arduino
- 12 -кадам: Модель темир жолчуларынын жабдыктары үчүн Fast Clock
- 13 -кадам: Программалык камсыздоо
- 14 -кадам: Кызыктар
Video: Кол дубалы менен ойноо: 14 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:39
Электрдик дубал сааты (кварцтын коммерциялык белгиси) азыркы учурда өзгөчө эч нерсе эмес. Аны көптөгөн дүкөндөрдөн сатып алса болот. Алардын кээ бирлеринде алар өтө арзан; болжол менен € 2 (50CZK) менен. Бул арзан баа аларды жакшылап кароого түрткү болушу мүмкүн. Анан мен тааныдым, алар анча көп ресурстарга ээ болбогон жана негизинен программалоого кызыккан электрондук жаңы келгендер үчүн кызыктуу оюнчук болушу мүмкүн. Бирок башкаларга өзүнүн өнүгүүсүн тартуулагым келет. Арзан дубал сааты эксперименттерге жана башталгыч сыноолорго өтө чыдамдуу болгондуктан, мен бул макаланы жазууну чечтим, анда мен негизги идеяларды бергим келет.
1 -кадам: Иштөө принциби
Кыймыл үчүн кандайдыр бир тепкич моторун колдонгон бул саатты таануу оңой. Кээ бир сааттарды бөлүп салган адам, бул кадимки тепкич моторундагы эки ордуна бир гана катушка экенин тааныды. Бул учурда биз "бир фазалуу" же "бир полюстуу" тепкич мотору жөнүндө сөз кылабыз. (Бул ат көп колдонулбайт, негизинен башка толук стек тепкич моторлору үчүн колдонулган маркалоо үчүн окшош туунду). Иштөө принциби жөнүндө ойлоно баштагандар, мотор дайыма туура багытта айланат, бул кантип мүмкүн деген суроо бериши керек. Иштөө принцибинин сүрөттөлүшү мотордун эски түрлөрүн көрсөткөн төмөнкү сүрөттө пайдалуу.
Биринчи сүрөттө А жана В терминалдары бар бир катушка, боз статор жана кызыл-көк ротор көрүнөт. Ротор туруктуу магниттен жасалат, мунун себеби, эмне үчүн ал түстүү, көрүнүктүү, кайсы багытта магниттелген (анча маанилүү эмес, түндүктө жана түштүктө). Статордо роторго жакын эки "оюкту" көрө аласыз. Алар иштөө принциби үчүн абдан маанилүү. Мотор төрт этапта иштейт. Биз ар бир кадамды төрт сүрөттү колдонуп сүрөттөп беребиз.
Биринчи кадамда (экинчи сүрөт) кыймылдаткыч кыймылга келет, ошол терминал А оң уюлга, В терминалы терс полюска туташат. Ал магниттик агымды түзөт, мисалы жебе багытында. Ротор абалында токтойт, анын орду магниттик агымга туура келет.
Экинчи кадам бийликти ажыраткандан кийин болот. Андан кийин статордогу магнит агымы токтотулат жана магниттин позицияга айлануу тенденциясы болот, анын поляризациясы статордун магниттик жумшак материалынын максималдуу көлөмү багытында болот. Жана бул эки оюктун чечүүчү мааниси бар. Алар максималдуу көлөмдүн кичине четтөөсүн көрсөтүп жатышат. Андан кийин ротор саат жебеси боюнча бир аз айланат. 3 -сүрөттө көрсөтүлгөндөй.
Кийинки кадам (төртүнчү сүрөт) чыңалуу менен байланышкан тескери полярдуулук менен (А терминалы терс уюлга, В терминалы оң уюлга). Бул ротордогу магнит катушка аркылуу магнит талаасына айланат дегенди билдирет. Ротор эң кыска багытты колдонот, бул дагы сааттын жебеси боюнча.
Акыркы (төртүнчү) кадам (бешинчи сүрөт) экинчиси менен бирдей. Мотор кайра чыңалуусуз калды. Магниттин баштапкы позициясы карама -каршы, бирок ротор кайрадан материалдын максималдуу көлөмүнө карай жылат. Бул дагы бир аз сааттын жебеси боюнча.
Мунун баары цикл, биринчи кадам кайра келет. Мотор кыймылы үчүн эки жана төртүнчү кадамдар туруктуу деп түшүнүлөт. Андан кийин ал механикалык түрдө редуктор менен 1:30 өткөрүп берүү ылдамдыгын сааттын экинчи колунун абалына которот.
2 -кадам: Иштөө принциби Конт
Сүрөттөр мотор терминалдарындагы чыңалуу толкун формасын көрсөтөт. Сандар бардык секунддарды билдирет. Чындыгында импульстар мейкиндиктерге салыштырмалуу бир топ кичине. Алар миллисекунддарга тиешелүү.
3 -кадам: Иш жүзүндө ажыратуу 1
Мен практикалык түрдө ажыратуу үчүн базардагы эң арзан дубал сааттардын бирин колдондум. Алардын жакшы жактары аз. Бири, бул баа ушунчалык төмөн, биз эксперименттер үчүн алардын бир нечесин сатып алабыз. Өндүрүш баага катуу багытталгандыктан, аларда эч кандай татаал акылдуу чечимдер, ошондой эле татаал бурамалар жок. Чындыгында аларда бурамалар жок, пластикалык чыкылдатуу гана бар. Бизге минималдуу шаймандар гана керек. Мисалы, бизге кулпуларды ачуу үчүн гана бурагыч керек.
Дубал саатын ажыратуу үчүн бизге жалпак учтуу бурагыч (же башка сокку таягы), кийим казыгы жана кыры көтөрүлгөн жумушчу килемче керек (бул милдеттүү эмес, бирок дөңгөлөктөрдү жана башка майда бөлүктөрдү издөөнү жеңилдетет).
4 -кадам: Иш жүзүндө ажыратуу 2
Дубал саатынын арт жагында үч илгич бар. 2 жана 10 сандарындагы эки үстүнкү кулпуну ачып, айнекти ачууга болот Айнек ачык болгондо, сааттын жебелерин жулуп салууга болот. Алардын ордун белгилөөнүн кажети жок. Биз аларды дайыма абалына кайтарабыз 12:00:00 Саат жебелери өчүк болгондо, сааттын кыймылын ажыратып алабыз. Анын эки бекиткичи бар (6 жана 12 -позицияда). Кыймылды мүмкүн болушунча түз тартуу сунушталат, антпесе кыймыл тыгылып калышы мүмкүн.
5 -кадам: Иш жүзүндө ажыратуу 3
Андан кийин кыймылды ачууга болот. Анын үч бекиткичи бар. экөө 3 жана 9 саатта, үчүнчүсү 6 саатта. Ачылганда, мотор менен редуктордун ортосундагы тунук дөңгөлөктү алып салуу жетиштүү, андан кийин мотордун ротору менен байланышкан.
6 -кадам: Иш жүзүндө ажыратуу 4
Мотор катушкасы менен статор бир гана кармагычта кармалып турат (12 саатта). Ал эч кандай электр рельсине туура келбейт, ал электр рельсине прессте гана колдонулат, андан кийин алып салуу татаал эмес. Катушка статорго эч кандай кармагычсыз сайылган. Аны оңой эле чечип салса болот.
7 -кадам: Иш жүзүндө ажыратуу 5
Катушканын ылдый жагында бир кичине басылган плата чапталган, анда бир чыгышы бар бир CoB (Chip on Board) бар. Экөө бийлик үчүн жана алар рельстерди колдонуу үчүн борттогу чоң чарчы төшөктөрдө токтотулат. эки чыгуу кристаллга туташкан. Баса, кристалл 32768 Гц жана келечекте колдонуу үчүн де-ширетилиши мүмкүн. Акыркы эки чыгуу катушкага туташкан. Мен борттогу издерди жана борттогу учурдагы төшөмөлөргө зымдарды кесүүнү коопсуз деп таптым. Мен катушканы ажыратып, зымды катушка түз туташтырууга аракет кылганда, мен ар дайым катушка зымын үзүп же катушка зыян келтирип койгом. Жаңы зымдарды бортко туташтыруу - бул мүмкүнчүлүктөрдүн бири. Келгиле, бул дагы примитивдүү. Дагы креативдүү ыкма - катушканы кубаттоочу аянтчаларга туташтыруу жана батарея кутусуна туташуу үчүн рельстерди иштетүү. Андан кийин электрониканы батарейканын кутусуна салып койсо болот.
8 -кадам: Иш жүзүндө ажыратуу 6
Лайктын сапатын омметрдин жардамы менен текшерсе болот. Катушкалардын каршылыгы болжол менен 200Ω. Баары ойдогудай болгондон кийин, биз дубал саатын кайра чогултабыз. Мен көбүнчө электр рельстерин ыргытып жиберем, андан кийин жаңы зымдарга көбүрөөк орун бар. Сүрөт электр рельсин ыргытуудан мурун тартылган. Кийинки сүрөттү алып салууну унутам.
Кыймылдын аягына чыккандан кийин, мен аны сааттын экинчи колу менен сынап жатам. Мен колумду анын огуна коюп, бир аз кубаттуулукту туташтырдым (мен CR2032 монета батареясын колдондум, бирок AA 1, 5V да колдонсо болот). Жөн эле кубаттуулукту бир полярдуулукта зымдарга, анан кайра карама -каршы полярдуулукка туташтырыңыз. Саат тыкылдашы керек жана кол бир секундага жылат. Кыймылыңызды аягына чыгаруу үчүн көйгөйлөр пайда болгондон кийин, зымдар көбүрөөк орунду ээлейт, жөн эле катушка кумурсканы карама -каршы тарапка кой. Электр рельстерин колдонбогондон кийин, сааттын кыймылына эч кандай таасири жок. Жогоруда айтылгандай, колду артка койгондо, саат 12: 00гө каратып коюу керек. Бул саат менен мүнөттүн ортосунда туура аралыкка ээ болуу.
9 -кадам: Дубал саатын колдонуу мисалдары
Убакытты көрсөтүүгө багытталган жөнөкөй мисалдардын көпчүлүгү, бирок ар кандай өзгөртүүлөр менен. Абдан популярдуу "Vetinari Clock" деп аталат. Терри Пратчеттин китебин көрсөтүп, лорд Ветинаринин күтүү бөлмөсүндө дубал сааты бар, бул туура эмес. Бул тартипсиздик элди күтпөйт. Экинчи популярдуу колдонмо "синус сааты". Бул синус ийри сызыгынын негизинде ылдамдайт жана басаңдайт, демек, адамдар толкундарда сүзүп баратканын сезишет. менин сүйүктүүлөрүмдүн бири "түшкү тамак". Бул өзгөртүү, бул саат 11-12 сааттын (0.8 сек) арасында бир аз ылдамыраак болуп, эрте түшкү тамакка ээ болуу дегенди билдирет; жана 12-13 саат (1, 2 сек) ортосундагы түшкү тамак учурунда бир аз жайыраак, түшкү тамакка бир аз көбүрөөк убакыт бөлүү жана жоголгон убакыттын ордун толтуруу.
Бул өзгөртүүлөрдүн көпчүлүгү үчүн 32768 Гц жумушчу жыштыгы менен эң жөнөкөй процессорду колдонуу жетиштүү. Бул жыштык саат жасоочулар арасында абдан популярдуу, анткени бул жыштык менен кристалл жасоо оңой жана экиликти секундага бөлүүгө тыюу салынат. Бул жыштыкты процессордо колдонуунун эки пайдасы бар: биз кристаллды сааттан оңой айланта алабыз; жана процессорлор, адатта, бул жыштыкта минималдуу керектөөгө ээ. Керектөө - бул дубал сааты менен ойноп жатканда биз көп чече турган нерсе. Өзгөчө мүмкүн болушунча эң кичинекей батареядан кубат саатын алуу. Буга чейин айтылгандай, катушка 200 resist каршылыкка ээ жана cca 1, 5V (бир АА батарейкасы) үчүн иштелип чыккан. Эң арзан процессорлор, адатта, бир аз чоңураак чыңалуу менен иштейт, бирок алардын баарында эки батарея (3V) иштейт. Биздин рынокто эң арзан процессорлордун бири - Microchip PIC12F629 же абдан популярдуу Arduino модулдары. Андан кийин биз эки платформаны кантип колдонууну көрсөтөбүз.
10 -кадам: Wall Clock колдонуу мисалдары PIC
Processor PIC12F629 иштөө чыңалуусу 2.0V - 5.5V. Эки "миньон батареясын" = АА клеткаларын (cca 3V) же эки АА кайра заряддалуучу АА аккумуляторун (cca 2, 4V) колдонуу жетиштүү. Бирок сааттын катушкасы үчүн ал долбоорлонгондон эки эсе көп. Бул керектөөнүн минималдуу түрдө керексиз өсүшүнө алып келет. Андан кийин ылайыктуу чыңалуу бөлүштүргүчтү түзө турган минималдуу сериядагы резисторду кошуу жакшы. Резистордун мааниси аккумулятордук кубаттуулук үчүн 120Ω же батареянын кубаттуулугу үчүн 200Ω болушу керек. Иш жүзүндө баасы 100Ω жөнүндө кичине кичине болушу мүмкүн. Теорияда катушкасы бар бир резистор жетиштүү. Мен дагы эле кандайдыр бир себептерден улам моторду симметриялуу түзмөк катары көрүп, анан ар бир катушка терминалынын жанына жарым каршылык (47Ω же 51Ω) менен резистор коюуга жакынмын. Катушки ажыратылганда процессорго терс чыңалууну болтурбоо үчүн коргоочу диоддорду кошкон кээ бир курулуштар. Башка жагынан алганда, процессордун кубаттуулугу катушту процессорго эч кандай күчөткүчсүз туташтыруу үчүн жетиштүү. PIC12F629 процессорунун толук схемасы 15 -сүрөттө көрсөтүлгөндөй болот. Бул схема кошумча башкаруу элементтери жок сааттар үчүн жарактуу. Бизде дагы эле бир кириш/чыгаруу пини GP0 жана бир гана GP3 бар.
11 -кадам: Дубал саатын колдонуу мисалдары Arduino
Ардуинону колдонууну каалагандан кийин, ATmega328 процессорунун маалымат барагын карап көрсөк болот. Бул процессор 4 ВГцке чейинки жыштыктагы 1.8V - 5.5V жана 10МГцке чейин 2.7V - 5, 5V деп аныкталган жумушчу чыңалууга ээ. Биз Arduino такталарынын бир кемчилигинен этият болушубуз керек. Бул кемчилик бортто чыңалуу жөндөгүчүнүн болушу. Чоң чыңалуу жөндөгүчтөрүнүн тескери чыңалуу менен көйгөйлөрү бар. Бул көйгөй 7805 регулятору үчүн кеңири жана эң жакшы сүрөттөлгөн. Биздин муктаждыктарыбыз үчүн 3V3 (3.3V кубаттуулугу үчүн иштелип чыккан) деп белгиленген тактаны колдонушубуз керек, анткени бул тактада 8 МГц кристаллы бар жана 2, 7 В менен иштей алат (бул эки АА дегенди билдирет) батареялар). Андан кийин колдонулган стабилизатор 7805 болбойт, бирок анын 3.3V эквиваленти болот. Стабилизаторду колдонбой эле тактайга кубат бергибиз келсе, бизде эки жол бар. Биринчи вариант, чыңалууну "RAW" (же "Vin") жана +3V3 (же Vcc) төөнөгүчтөрүнө бириктирип, тактаңызда колдонулган стабилизатордун чыңалуудан коргоосу жок экенине ишениңиз. Экинчи вариант - стабилизаторду жок кылуу. Бул үчүн Arduino Pro Miniди колдонуу схема боюнча жакшы. Бул схемада ички стабилизаторду ажыратуу үчүн иштелип чыккан SJ1 секиргиси бар (кызыл тегерекчеде 16 -сүрөттө). Тилекке каршы, клондордун көпчүлүгүндө бул секирүүчү жок.
Arduino Pro Miniнин дагы бир артыкчылыгы - бул кадимки иштөө учурунда электр энергиясын керектей турган кошумча өзгөрткүчтөрдүн жоктугунда (бул программалоо учурунда кичине татаалдашуу). Arduino такталары барган сайын ыңгайлуу процессорлор менен жабдылган, алар бир чыгууга жетишсиз. Андан кийин жуп транзисторлорду колдонуу менен минималдуу кичине чыгуучу күчөткүчтү кошуу жакшы. Батарея кубатынын негизги схемасы сүрөттө көрсөтүлгөндөй болот.
Arduino чөйрөсү ("Wiring" тили) заманбап операциялык системалардын атрибуттарына ээ болгондуктан (анда так убакыт боюнча көйгөйлөр бар), Timer0 же Timer1 үчүн тышкы саат булагын колдонуу жөнүндө ойлонуу жакшы. Бул T0 жана T1 кириштерин билдирет, алар 4 (T0) жана 4 (T1) деп белгиленген. Дубал саатындагы кристаллды колдонгон жөнөкөй осциллятор ошол кирүүлөрдүн бирине туташтырылышы мүмкүн. Бул сааттын канчалык так чыгарылышын каалайт. Figure 18 үч негизги мүмкүнчүлүгүн көрсөтөт. Биринчи схема колдонулган компоненттердин мааниси боюнча абдан үнөмдүү. Бул азыраак үч бурчтук чыгарууну камсыз кылат, бирок толук чыңалуу диапазонунда CMOS кирүүлөрүн иштетүү үчүн жакшы. Экинчи схема инверторлорду колдонуп, алар CMOS 4096 же TTL 74HC04 болушу мүмкүн. Схемалар бири -бирине анча окшош эмес, алар негизги формада. Үчүнчү схема CMOS 4060 микросхемасы, бул кристалды түз туташтырууга мүмкүндүк берет (74HC4060 эквиваленти ошол эле схеманы колдонуп, бирок резисторлордун ар кандай маанилерине ээ). Бул схеманын артыкчылыгы, анда 14 бит бөлүштүргүч камтылган, анда таймер киргизүү катары кайсы жыштык колдонулаарын чечсе болот.
Бул схеманын чыгышы T0 киргизүү үчүн колдонулушу мүмкүн (пин 4 Arduino менен) жана андан кийин тышкы киргизүү менен Timer0 колдонулушу мүмкүн. Бул анча практикалык эмес, анткени Timer0 кечиктирүү (), milis () же micros () сыяктуу функциялар үчүн колдонулат. Экинчи вариант - аны T1 киришине туташтыруу (5 -пин Arduino менен) жана кошумча киргизүү менен Timer1ди колдонуу. Кийинки вариант - аны INT0 (Arduino белгилөөдө 2 -пин) же INT1 (3 -пин) киришине туташтыруу жана мезгили менен чакырылган attachInterrupt () функциясын колдонуу жана регистрациялоо. Бул жерде 4060 чиптери сунуш кылган пайдалуу бөлүштүргүч, анда чалуу анча көп болбошу керек.
12 -кадам: Модель темир жолчуларынын жабдыктары үчүн Fast Clock
Кызыкчылык үчүн мен бир пайдалуу схеманы сунуштайм. Мен жалпы көзөмөлгө көбүрөөк дубал сааттарын туташтырышым керек. Дубал сааттары бири -биринен алыста жана анын үстүнкү жагында электромагниттик ызы -чуу көп болгон өнөр жай мүнөздүү. Андан кийин байланыш үчүн чоңураак чыңалууну колдонгон эски автобустарга кайттым. Албетте, мен батарейкада иштөөнү чечкен жокмун, бирок 12В турукташтырылган электр менен камсыздоону колдондум. Мен TC4427 драйверинин жардамы менен процессордун сигналын күчөттүм (анын жеткиликтүүлүгү жана баасы жакшы). Анан 0.5Ага чейин мүмкүн болгон 12В сигналын көтөрүп жатам. Мен кулчулук сааттарга жөнөкөй резистордук бөлүштүргүчтөрдү коштум (18 -сүрөттө R101 жана R102 деп белгиленген; Мен моторду симметриялуу деп түшүнөм, бул кереги жок). Мен дагы токту көтөрүү менен ызы -чууну басаңдатууну каалайм, андан кийин эки резистор 100Ω колдондум. Мотор катушкасындагы чыңалууну чектөө үчүн, В101 көпүрөсүнө параллель көпүрө тууралагычы туташтырылган. Көпүрөнүн DC тарабы кыска, андан кийин ал параллелдүү диоддордун эки жупун билдирет. Эки диод чыңалуунун болжол менен 1,4В түшүүсүн билдирет, бул мотор үчүн нормалдуу жумушчу чыңалууга абдан жакын. Бизге анти-параллель керек, анткени күч бир жана карама-каршы полярдыкта алмашып турат. Бир кул дубал сааты колдонгон жалпы ток (12V - 1.5V) / (100Ω + 100Ω) = 53mA болот. Бул ызы -чууну болтурбоо үчүн алгылыктуу.
Бул жерде схемалар боюнча эки өчүргүч бар, алар дубал саатынын кошумча функцияларын көзөмөлдөө үчүн (темир жолчулар моделинде ылдамдыктын мультипликатору). Кыз сааттын дагы бир кызыктуу өзгөчөлүгү бар. Алар эки 4мм банан туташтыргычы аркылуу туташкан. Алар дубалда дубал саатын кармап турушат. Айрыкча, колдонууну баштоодон мурун белгилүү бир убакытты белгилөөнү кааласаңыз, аларды ажыратып, кайра кайра туташтырсаңыз болот (жыгач блок дубалга бекитилет). Эгерде сиз "Биг Бенди" түзүүнү кааласаңыз, анда төрт жуп розеткасы бар жыгач куту керек. Ал куту сааттар сакталбаганда аларды сактоочу жай катары колдонулушу мүмкүн.
13 -кадам: Программалык камсыздоо
Программанын көз карашынан алганда, абал салыштырмалуу жөнөкөй. Келгиле, кристалл 32768Hz (баштапкы сааттан кайра иштетилген) аркылуу PIC12F629 чипинде ишке ашырууну сүрөттөп берели. Процессордун бир инструкция цикли төрт осциллятор циклине созулат. Кайсы бир Таймер үчүн сааттын ички булагын колдонсок, бул инструкция циклдерин билдирет (fosc/4 деп аталат). Бизде, мисалы, Timer0 бар. Таймердин кирүү жыштыгы 32768 /4 = 8192Гц болот. Таймер сегиз бит (256 кадам) жана биз аны эч кандай тоскоолдуксуз толтурабыз. Биз таймердин толуп кетишине гана көңүл бурабыз. Окуя 8192 /256 = 32Гц жыштыгында болот. Анан биз бир секундда импульстарга ээ болгубуз келгенде, ар бир 32 таймердин толуп кетишине импульс түзүүбүз керек. Бизде сааттын, мисалы, төрт эсе тезирээк иштешин каалайбыз, анда импульс үчүн 32/4 = 8 толуп кетиши керек. Кээ бир учурларда, биз саатты туура эмес, бирок так иштеп чыгууга кызыкдарбыз, бизде импульстун 32 × саны сыяктуу бир нече импульстар үчүн толуп кетүүлөрдүн суммасы болушу керек. Анан биз төмөнкүдөй тартипсиз сааттардын матрицасына кире алабыз: [20, 40, 30, 38]. Андан кийин сумма 128, бул 32 × 4 менен бирдей. Мисалы, синус сааты үчүн [37, 42, 47, 51, 55, 58, 60, 61, 62, 61, 60, 58, 55, 51, 47, 42, 37, 32, 27, 22, 17, 13, 9, 6, 4, 3, 2, 3, 4, 6, 9, 13, 17, 22, 27, 32] = 1152 = 36*32). Биздин саат үчүн биз тез иштөө үчүн бөлгүчтүн аныктамасы катары эки бекер киргизүүнү колдонобуз. Ылдамдык үчүн бөлүнүүчү стол EEPROM эсинде сакталат. Программанын негизги бөлүгү мындай көрүнүшү мүмкүн:
MainLoop:
btfss INTCON, T0IF goto MainLoop; Timer0 bcf INTCON, T0IF incf CLKCNT, f btfss SW_STOP күтө туруңуз; эгер STOP которгуч активдүү болсо, clrf CLKCNT; ачык эсептегич сайын btfsc SW_FAST; эгер тез баскыч басылбаса goto NormalTime; кадимки убакытты гана эсептөө movf FCLK, w xorwf CLKCNT, w btfsc STATUS, Z; эгер FCLK менен CLKCNT бирдей болсо SendPulse NormalTime: movf CLKCNT, w andlw 0xE0; бит 7, 6, 5 btfsc STATUS, Z; эгер CLKCNT> = 32 goto MainLoop goto SendPulse
SendPulse функциясын колдонуучу программа, бул функция мотордун импульсун өзү түзөт. Функция так/жуп импульсту эсептейт жана ошонун негизинде бир же экинчи чыгууда импульсту түзөт. Туруктуу ENERGISE_TIME колдонулган функция. Бул туруктуу убакыттын ичинде мотор катушкасы иштейт. Ошентип, бул керектөөгө чоң таасирин тийгизет. Мотор ушунчалык кичинекей болгондо, кадамды бүтүрө албайт, кээде экинчиси жоголуп кетет (көбүнчө экинчи кол 9 номеринин тегерегинде жүргөндө, "өйдө" баратканда).
SendPulse:
incf POLARITY, f clrf CLKCNT btfss POLARITY, 0 goto SendPulseB SendPulseA: bsf OUT_A goto SendPulseE SendPulseB: bsf OUT_B; goto SendPulseE SendPulseE: movlw 0x50 movwf ECNT SendPulFoPoL
Толук баштапкы коддор www.fucik.name беттин аягында жүктөлүп алынышы мүмкүн. Arduino менен кырдаал анча татаал эмес, анткени Arduino жогорку программалоо тилин колдонуп, өзүнүн 8MHz кристалын колдонуп, биз кандай функцияларды колдонуп жатканыбызга сак болушубуз керек. Классикалык кечиктирүүнү () колдонуу анча коркунучтуу эмес (ал функциянын башталышынан баштап убакытты эсептейт). Жакшы жыйынтыктар Timer1 сыяктуу китепканаларды колдонууга ээ болот. Көптөгөн Arduino долбоорлору PCF8563, DS1302 сыяктуу тышкы RTC түзмөктөрүндө ж.
14 -кадам: Кызыктар
Бул дубал моторун колдонуу системасы эң негизги катары түшүнүлөт. Бул көптөгөн жакшыртуулар бар. Мисалы, Арткы EMF өлчөөгө негизделген (ротор магнитинин кыймылы менен өндүрүлгөн электр энергиясы). Андан кийин, электрондук кыймылдаткычты тааныса болот, эгер болбосо, анда импульсту тез кайталаңыз же "ENERGISE_TIME" маанисин жаңыртыңыз. көбүрөөк пайдалуу кызыгуу - "тескери кадам". Сыпаттамага таянсак, мотор бир гана айлануу үчүн иштелип чыккан жана аны өзгөртүү мүмкүн эмес. Бирок тиркелген видеолордо көрсөтүлгөндөй, багытын өзгөртүү мүмкүн. Принцип жөнөкөй. Кайра мотор принцибине кайрылалы. Элестетип көрүңүз, мотор экинчи баскычтын туруктуу абалында (Figure 3). Биринчи кадамда көрсөтүлгөндөй чыңалууга туташкандан кийин (Figure 2), мотор логикалык жактан тескери багытта айланууну баштайт. Импульс жетишерлик кыска болуп, мотор туруктуу абалга келгиче бир аз бүтөт, логикалык жактан бир аз жылып калат. Үчүнчү абалда сүрөттөлгөндөй, бул чырактын убагында кийинки чыңалуу импульсу келет (4 -сүрөт), андан кийин мотор башталган багытты улантат, бул тескери багытта. Биринчи импульстун узактыгын кантип аныктоо керек жана биринчи жана экинчи импульстун ортосунда кандайдыр бир аралыкты түзүү үчүн бир аз маселе. Эң жаманы, бул константалар сааттын ар бир кыймылы үчүн, кээде учурларда өзгөрөт, колдор "ылдый" (3 -тегерегинде) же өйдө (9 -сандын тегерегинде), ошондой эле нейтралдуу позицияларда (12 жана 6 -сандардын тегерегинде) кетет.. Видеодо көрсөтүлгөн учурда мен төмөнкү коддо көрсөтүлгөн баалуулуктарды жана алгоритмди колдондум:
#define OUT_A_SET 0x02; орнотуу үчүн конфигурация b
#define OUT_B_SET 0x04; b үчүн конфигурация так #аныктоо ENERGISE_TIME 0x30 #define REVERT_TIME 0x06 SendPulse: incf POLARITY, f clrf CLKCNT btfss POLARITY, 0 goto SendPulseB SendPulseA: movlw REVERT_TIME movwf ECB movlw OTT_ mov импульстан баштаңыз B movwf GPIO RevPulseLoopA:; кыска убакыт күтүү decfsz ECNT, f goto RevPulseLoopA movlw OUT_A_SET; анда импульс A movwf GPIO goto SendPulseE SendPulseB: movlw REVERT_TIME movwf ECNT movlw OUT_A_SET; импульс менен баштоо A movwf GPIO RevPulseLoopB:; кыска убакыт күтүү decfsz ECNT, f goto RevPulseLoopB movlw OUT_B_SET; анда импульс B movwf GPIO; goto SendPulseE SendPulseE: movlw ENERGISE_TIME movwf ECNT SendPulseLoop: decfsz ECNT, f goto SendPulseLoop bcf OUT_A bcf OUT_B goto MainLoop
Тескери кадамдарды колдонуу дубал сааты менен ойноо мүмкүнчүлүгүн жогорулатат. Биз кээде экинчи колубуздун жылмакай кыймылына ээ болгон дубал саатын таба алабыз. Бизде ал сааттан коркуу жок, алар жөнөкөй трюкты колдонуп жатышат. Мотордун өзү мында сүрөттөлгөн мотор менен бирдей, бир гана тиштүү катыш чоңураак (көбүнчө 8: 1 көбүрөөк) жана мотор ылдамыраак айланат (көбүнчө 8 эсе ылдам), бул жылмакай кыймылдын эффектин түзөт. Ошол дубал саатын өзгөртүүнү чечкенден кийин, суралган мультипликаторду эсептөөнү унутпаңыз.
Сунушталууда:
Интерактивдүү LED плиткасы дубалы (көрүнгөндөн оңой): 7 кадам (сүрөттөр менен)
Интерактивдүү LED плиткасы дубалы (көрүнгөндөн оңой): Бул долбоордо мен Arduino жана 3D басылган бөлүктөрүн колдонуп интерактивдүү LED дубал дисплейин кургам. Мен өзүмдүн версиямды ойлоп тапкым келди, ал бир гана жеткиликтүү эмес, бирок
Pixel Cloud чөйрө дубалы жарыгы: 6 кадам (сүрөттөр менен)
Pixel Cloud Ambient Wall Light: Ikea жарыгынын дагы бир өзгөртүүсү, уникалдуу нерсени жаратуу үчүн даректүү LED жана контроллер кошулду. Балдар бөлмөсүндө жумшак чөйрө жарыгы үчүн жана түнкү жарык катары колдонуу үчүн иштелип чыккан. Бул долбоор 56x APA102 даректүү пикселди, NLEди колдонот
Чыныгы кол кыймылынын үстүнөн башкарылган жөнөкөй роботтук кол: 7 кадам (сүрөттөр менен)
Чыныгы кол кыймылынын үстүнөн башкарылган жөнөкөй роботтук кол: Бул үйрөнчүктөр үчүн DOF роботтук колу. Колу Arduino башкарат. Бул оператордун колуна бекитилген сенсор менен туташкан. Ошондуктан оператор колунун чыканагын башкарып, өзүнүн чыканак кыймылын бүгө алат
Эски DVD драйвынан кол менен жасалган кол чырак: 6 кадам
Эски DVD драйвынан Hand Crank Flashlight: Салам балдар, мен Мануэльмин жана жашыл энергия боюнча дагы бир долбоорго кош келиңиздер. Бүгүн биз эски DVD ойноткучтан кичинекей кичинекей кол чырак жасайбыз жана ал өзгөчө кырдаалдарда ишенимдүү шерик боло алат. Билем, бул мүмкүн эмес окшойт
Synth мээлейи: Gakken SX-150 менен ойноо: 8 кадам (Сүрөттөр менен)
Synth Колкап: Gakken SX-150 менен ойноо: {// Баштоочу электроника үчүн жакшы. // Бул сизге интерфейстерди куруу үчүн негизги ноу-хауды берет. // Эгерде чынчыл болсок, мунун көбү башка Iblesте бар, бирок мага бул долбоорлорду чогултуу идеясы жакты // // Геккен