Мазмуну:

Custom Arduino CAN рулду баскычтарын жаңы машинанын стерео менен кармап турушу үчүн: 9 кадам (сүрөттөр менен)
Custom Arduino CAN рулду баскычтарын жаңы машинанын стерео менен кармап турушу үчүн: 9 кадам (сүрөттөр менен)

Video: Custom Arduino CAN рулду баскычтарын жаңы машинанын стерео менен кармап турушу үчүн: 9 кадам (сүрөттөр менен)

Video: Custom Arduino CAN рулду баскычтарын жаңы машинанын стерео менен кармап турушу үчүн: 9 кадам (сүрөттөр менен)
Video: DIY Mod Gaggia Espresso Coffee Machine (Part 1) 2024, Июль
Anonim
Custom Arduino CAN рулду баскычтарын Жаңы Авто Стерео менен кармап турушу керек
Custom Arduino CAN рулду баскычтарын Жаңы Авто Стерео менен кармап турушу керек
Custom Arduino CAN рулду баскычтарын Жаңы Авто Стерео менен кармап турушу керек
Custom Arduino CAN рулду баскычтарын Жаңы Авто Стерео менен кармап турушу керек
Custom Arduino CAN рулду баскычтарын Жаңы Авто Стерео менен кармап турушу керек
Custom Arduino CAN рулду баскычтарын Жаңы Авто Стерео менен кармап турушу керек

Мен Volvo V70 -02деги баштапкы унаа стереоун жаңы стерео менен алмаштырууну чечтим, андыктан mp3, bluetooth жана handsfree сыяктуу нерселерден ырахат алам.

Менин машинамда стерео үчүн рулду башкаруу элементтери бар, мен дагы деле колдонгум келет. Мен көйгөй болот деп күткөн эмесмин, анткени базарда менин машинама шайкеш келген бир нече адаптер бар. Бирок, көп өтпөй алар жок экенин билдим! (V70 үчүн адаптерлер бир аз башка CAN протоколунан улам -02 унаалар менен көйгөйлөргө дуушар болушу мүмкүн окшойт.)

Анда эмне кылыш керек? Эски стерео сакталабы? Иштебеген кнопкалар менен жашайсызбы? Албетте жок! Эгерде рынокто иштөөчү адаптер жок болсо, анда аны курууга туура келет!

Бул көрсөтмө рулду баскычтары CAN автобусу аркылуу байланышкан унааларга (кээ бир адаптациялар менен) колдонулушу мүмкүн.

1 -кадам: Стереого буйруктарды кантип жөнөтүү керек экенин билип алыңыз

Стереого буйруктарды кантип жөнөтүү керек экенин билип алыңыз
Стереого буйруктарды кантип жөнөтүү керек экенин билип алыңыз
Стереого буйруктарды кантип жөнөтүү керек экенин билип алыңыз
Стереого буйруктарды кантип жөнөтүү керек экенин билип алыңыз

Сиз кыла турган биринчи нерсе - стерео кандай алыстан кирүүнү күтүп жатканын билүү. Адатта, өндүрүүчүлөр сизге мындай деп айтышпайт жана сиз, тескерисинче, тескери инженерия үчүн иштей турган алыстан башкаруу пулдарына ээ эмессиз.

Менин жаңы стерео пультум (Кенвуд) бир зымдан турат жана анын кандай иштээри жөнүндө эч кандай маалымат таба алган жокмун. Бирок алыстан кирүү үчүн 3,5 мм джек да бар. Мен да бул тууралуу эч нерсе биле алган жокмун. Бирок башка бренддер үчүн 3,5 мм уячасы жөнүндө кээ бир маалыматтар бар, алар ар кандай буйруктар учу менен жеңинин ортосунда белгилүү бир каршылыкты колдонуу менен аныкталат (жана каалашынча шакек менен жеңдин ортосунда). Мисалы https://forum.arduino.cc/index.php?topic=230068.0. Ошентип, мен сыноо панели, резисторлордун туткасы жана стереого туташтырылган 3,5 мм штепсель менен жабдылган жана нан тактасына туташып көрүүнү чечтим. Башында эч нерсе таанылган жок, бирок стерео "үйрөнүү режими" менюсуна ээ жана ал жерде командалар ар кандай каршылыктарды колдонууда ийгиликтүү орнотулушу мүмкүн. Ийгилик!

Бирок кийинчерээк мен бул жерден ката кетиргенимди билдим: стерео үйрөнгөндөй көрүнгөн командалардын баары эле иштебейт. Мисалы 30 kOhm окуу режиминде табылган, бирок кийинчерээк иштеген эмес жана кээ бир буйруктар үчүн каршылык айырмасы ушунчалык кичине болгондуктан, кийинчерээк туура эмес буйрук иштетилген.

Андыктан мен сизге резисторлору бар панелди колдонууну сунуштайм жана бардык алыскы командалар үчүн которуштуруу баскычтарын колдонуп, алардын бардыгы иштээрин текшерип көрүүнү сунуштайм.

Эгерде сиздин унаа стереоңуз ушундай эле жол менен кабыл ала албаса, анда сиз бул чечимди ыңгайлаштыруу үчүн анын кантип иштээрин түшүнүшүңүз керек болот. Эгер таптакыр түшүнө албасаңыз, анда сизде көйгөй бар.

2 -кадам: CAN автобусуна кайда туташуу керек экенин билип алыңыз

CAN автобусуна кайда туташуу керек экенин билип алыңыз
CAN автобусуна кайда туташуу керек экенин билип алыңыз

Сиз CAN автобусуна туташуу үчүн жакшы жерди табышыңыз керек. CAN аркылуу байланышкан эски стереону алмаштырып жаткандыктан, стереонун артында экенин таба алышыңыз керек. CAN автобусу бир жуп буралган зымдардан турат (CAN-L жана CAN_H). Ишенимдүү болуу үчүн унааңыздын электр схемасына кайрылыңыз.

3 -кадам: CAN билдирүүлөрүнүн тескери инженериясы

CAN билдирүүлөрүнүн тескери инженериясы
CAN билдирүүлөрүнүн тескери инженериясы

Google сизге кандай CAN билдирүүлөрдү угушуңуз керектигин айтпаса, CAN автобусуна туташып, тескери инженерия жасашыңыз керек болот. Мен Arduino Uno жана CAN калканчын колдондум. (CAN калканынын сизге кереги жок, кийинчерээк көрө турганыңыздай, анын ордуна нан тактасында арзан компоненттерди колдонсоңуз болот.)

Унааңызга туташууда кандай ылдамдыкта колдонуу керек экенин билүү үчүн Google менен кеңешиңиз. (Адатта сиз жогорку ылдамдыкта жана төмөн ылдамдыкта CAN бар экенин таба аласыз. Сиз төмөн ылдамдыктагы тармакка туташып жатасыз.)

Ошондой эле Arduino программасын CAN билдирүүлөрүн сериялык интерфейске жаздырууга программалашыңыз керек, андыктан аларды компьютериңиздеги журнал файлына сактай аласыз. Стандарттык Arduino IDE маалыматтарды журнал файлына сактабайт, бирок сиз мис. Анын ордуна шыбак.

Программаңызды жазуудан мурун CAN_BUS_Shield китепканасын орнотушуңуз керек.

Бул жерде программаңызды баштоого жардам берүү үчүн кээ бир жасалма коддор бар:

жайгашуу()

{init serial connection init CAN library} loop () {эгер CAN билдирүүсү алынса {read CAN message format log entry write log log series to}}

Кеңештер:

CAN китепканасынын функциясына кирүү үчүн MCP_CAN классынын мисалын колдоносуз:

MCP_CAN m_can;

Киргизүү БОЛОТ:

while (m_can.begin ()! = CAN_OK)

{кечиктирүү (1000); }

CAN билдирүүлөрүн текшерүү жана окуу:

while (m_can.checkReceive () == CAN_MSGAVAIL)

{// CAN id алуу, билдирүүнүн узундугу жана билдирүү маалыматы m_can.readMsgBufID (& m_canId, & m_msgLen, m_msgBuf); // Бул жерде билдирүү маалыматы менен бир нерсе кылыңыз}

Эгерде сизге көбүрөөк жардам керек болсо, анда менин программамдын шилтемесин кийинчерээк таба аласыз. CAN калкан китепканасы дагы бир мисалды камтыйт. Же ушул сыяктуу кадамды камтыган mviljoen2дин көрсөтмөсүн текшериңиз.

Адегенде сизге маалыматтарды чыпкалоого жардам берүү үчүн маалымдама файлы керек болот. От алдырууну радио режимине которуңуз жана бардыгын бир нече мүнөттө эч кандай баскычтарга тийбей жазыңыз.

Андан кийин, ар бир баскыч үчүн, журналды баштаңыз, баскычты басыңыз жана каттоону токтотуңуз.

Бүткөндөн кийин, сиздин талапкерлерди табуу үчүн, баскыч журналдарыңыздан маалымдама журналыңыздагы бардык нерселерди чыпкалоо керек. Мен дагы көптөгөн билдирүүлөр калганын билдим, ошондуктан мен дагы журналдарды түздүм жана андан кийин "А командасына талапкерлер бардык А-файлдарында жана шилтеме файлдарынын биринде да болушу керек" деп талап кылдым. Бул мага аракет кылуу үчүн бир нече мүмкүнчүлүктөрдү калтырды.

Журналдарда көптөгөн билдирүүлөр камтылган, андыктан сиз бул үчүн кандайдыр бир программа жазышыңыз керек же Excel колдонушуңуз керек. (Мен муктаждыгым үчүн абдан катуу коддолгон шарттары бар программаны колдондум, андыктан мен колдоно ала турган программаны сунуштай албайм деп корком.)

Эскертүү: Сиз баскыч дайыма бирдей билдирүү чыгараарына ишене албайсыз. Кээ бир биттерде көбөйүүчү эсептегичтер болушу мүмкүн ж.

Эгерде сизде Volvo V70 -02 болсо, анда сиз төмөндөгүдөй:

  • Билдирүүнүн id: 0x0400066Byte0: 0x00, 0x40, 0x80 же 0xc0 (баары бир)
  • Байт1: 0х00 (баары бир)
  • Byte2: 0x00 (баары бир)
  • Byte3: 0x00-0x07 (баары бир)
  • Byte4: 0x1f (баары бир)
  • Byte5: 0x40 (баары бир)
  • Byte6: 0x40 (баары бир)
  • Byte7: Баскычтын идентификатору: 0x77 = көлөмүн жогорулатуу, 0x7b = көлөмүн азайтуу, 0x7d = кийинки трек, 0x7e = мурунку трек.

Сиз буйруктарды таптыңыз деп ойлогонуңузда, программаны кызыктуу билдирүүлөрдү гана каттап тургандай кылып өзгөртүү жакшы болмок. Туура билдирүүлөрдү аныктап жатканыңызды текшерүү үчүн баскычтарды басып жатканда сериялык журнал терезесин караңыз.

4 -кадам: Аппараттык прототип

Аппараттык прототип
Аппараттык прототип

Сиздин аппараттык жөндөмдүү болушу керек:

  1. CAN автобусуна келген буйруктарды аныктаңыз
  2. Стереого башка форматтагы буйруктарды жөнөтүңүз

Эгерде сизде жетиштүү орун болсо, анда Arduino менен CAN калканчын колдонуп, экинчисине кошумча жабдууларды тиркеп коюңуз. Бирок, кээ бир кемчиликтери бар:

  • CAN калканынын баасы
  • Көлөм
  • Arduino электр менен камсыздоо, эгерде ал түздөн -түз 12В унааларыңызга туташтырылса, бактылуу болбойт (ал иштейт, бирок анын өмүрү кыскарат).

Ошентип, анын ордуна мен төмөнкүлөрдү колдондум:

  • Atmega 328, "Arduino мээ". (Кээ бир варианттар бар, Arduino Uno менен бирдей болгонун алыңыз. Аны Arduino жүктөгүч менен же ансыз сатып алсаңыз болот.)
  • 16 MHz кристалл + саат сигнал үчүн конденсаторлор.
  • MCP2551 CAN кабыл алгыч.
  • MCP2515 CAN контроллери.
  • TSR1-2450, 5.5 үчүн 6.5-36V айлантат. (Прототипте колдонулган эмес, анткени программалык камсыздоо электр менен камсыздоо жөнүндө кам көрбөйт.)
  • Стереого буйруктарды жөнөтүүдө колдонула турган CD4066B которгуч.
  • Бир -эки резистор. (Бааларды Eagle схемаларында кийинки кадамда тапса болот.)

Бул конфигурация менен жакшы нерсе, бул Arduino жана CAN shield китепканасы менен толук шайкеш келет.

Эгерде сиз төрттөн ашык баскычты иштеткиңиз келсе, анда CD4066Bден башка нерсени колдонууну ойлонушуңуз мүмкүн. CD4066B ар бири Atmegas GPIO казыктарынын бири тарабынан башкарылуучу төрт өчүргүч катары сүрөттөлүшү мүмкүн. Ар бир которгучка стерео кирүү катары колдонулган каршылыкты көзөмөлдөө үчүн колдонулган резистор туташкан. Ошентип, бул төрт түрдүү буйрукту жөнөтүү үчүн оңой колдонулушу мүмкүн. Эгерде алар бириктирилсе, анда кошумча каршылык көрсөткүчтөрүн алууга болот. Бул жерде мен жогоруда айткан ката кетет. Менде төрт баскыч бар, бирок мага алты түрдүү буйрук берүү үчүн алардын экөөнү узак жана кыска басуу катары ишке ашырууну пландадым. Бирок аягында мен алты жумушчу комбинациясын бере турган резисторлордун комбинациясын таба албасымды билдим. Анын ордуна аналогдук сигналды стереого (3,5 мм учу) туташтыруу мүмкүн болмок. (Белгилей кетсек, Atmega аналогу жок.

Сыноо максатында мен прототипиме туташуу үчүн жөнөкөй "машина жана стерео" симуляторун жасадым. Мүчүлүштүктөрдү оңдоону жеңилдетет, эгер сиз машинаңызга отурууну жана программаны жактырбасаңыз, мен муну сунуштай алам.

Прототип сүрөттүн астындагы панель менен сүрөттөлгөн. Электр энергиясы менен камсыздоо, программалоо жана сериялык журнал үчүн ал Arduino Uno тиркелет, ал жерде Atmega чипи алынып салынды.

Жогорку панель - бул прототипти алгачкы сыноо үчүн колдонула турган унаа + стерео симулятору.

Прототип + симулятор мындай иштөөгө арналган:

  • Тренажер тактасындагы которуштуруу баскычтарынын бирин басыңыз. (Бул сенин рулду баскычтарың.)
  • Качан симулятор программасы баскычты басууну аныктаганда, ал баскыч басылганча, ар 70 мс тиешелүү CAN билдирүүсүн жөнөтөт. (Анткени мен мурун алган журналдар менин машинамда ушундай иштээрин көрсөткөн.) Ошондой эле автобустагы башка трафикти окшоштуруу үчүн көптөгөн "керексиз" CAN билдирүүлөрдү жөнөтөт.
  • CAN билдирүүлөрү CAN автобусунда жөнөтүлөт.
  • CAN билдирүүлөрү прототип тарабынан кабыл алынат.
  • MCP2515 билдирүүнүн идентификаторуна негизделген бардык байланышпаган билдирүүлөрдү ыргытат.
  • Колдонулушу керек болгон MCP2515 билдирүүсүн алганда, ал билдирүү бар экенин көрсөтөт.
  • Атмега билдирүүнү окуйт жана кайсы баскычты активдүү деп эсептөө керектигин чечет.
  • Атмега ошондой эле акыркы билдирүү качан алынганын көзөмөлдөп турат, белгилүү бир убакыттан кийин баскыч бошотулган деп эсептелет. (CAN билдирүүлөрү баскыч басылып калганын эмес, басылганын билдирет.)
  • Эгерде баскыч активдүү деп эсептелсе, анда CD4066Bдеги бир же бир нече которуштуруулар иштетилет.
  • Тренажер (азыр сиздин стерео ролуңузда) учу менен жеңинин ортосунда каршылык колдонулганын аныктайт. (Учу 3.3Вга жана резистор аркылуу аналогдук кирүүчү пинге туташтырылган. Эч кандай буйрук активдүү болбогондо, бул пин 3.3V окуйт, команда активдүү болгондо мааниси төмөн болуп, буйрукту аныктайт.
  • Буйрук активдүү болуп турганда, тиешелүү жетекчи да жандырылат. (Алты LED бар, анткени мен эки баскычым үчүн ар кандай узун / кыска басууну колдонууну пландадым.)

Прототип жабдыктары жөнүндө көбүрөөк маалымат алуу үчүн, Eagle схемаларын кийинки кадамдан караңыз.

Симулятор тактасынын аппараттык жабдуулары жөнүндө кошумча маалымат:

  • 16 МГц кристалл
  • 22 pF конденсаторлор
  • LED каршылыгы LED касиеттери боюнча тандалышы керек
  • A7 жана 3.3V туташкан резистор, мис. 2kOhm (критикалык эмес).
  • MCP2551 жана MCP2515ке туташкан резисторлор өйдө / ылдый түшөт. Тандоо мис. 10 kOhm.

(Же сиз кааласаңыз симулятордун "CAN бөлүгү" үчүн CAN калканчын колдонсоңуз болот.)

Аппаратты долбоорлоодо Atmega пиндери Arduino казыктарына кандайча картага түшөрүн билүү маанилүү.

(Эч кандай ледтерди CD 4066Bке түз туташтырбаңыз, ал аз гана токту башкара алат. Мен биринчи жолу чыгарууну текшергенде жана чип жараксыз болуп калды деп аракет кылдым. Жакшы жагы, мен алардын бир жупун сатып алганымда ушунчалык арзан.)

5 -кадам: Fuse программалоо

Балким, сиз мурунку кадамда прототиптин MCP2515ке саат сигналын чыгаруучу өзүнчө компоненттери жок экенин байкагандырсыз. Себеби, биз колдоно турган Atmega сааты сигнал катары колдонулган 16 МГц кристалл мурунтан эле бар. Бирок биз аны MCP2515ке түз байланыштыра албайбыз жана демейки боюнча Атмегада сааттын чыгып кетүү сигналы жок.

(Кааласаңыз, бул кадамды өткөрүп жиберип, анын ордуна кошумча сааттык аппаратты кошуңуз.)

Бирок, биз GPIO казыктарынын биринде сааттын чыгып кетүү сигналын иштетүү үчүн "сактандыруучу программалоо" деп аталган нерсени колдоно алабыз.

Алгач сиз Arduino IDE колдонгон "board.txt" аттуу файлды табышыңыз керек. Сиз Arduino Uno үчүн жазууну көчүрүп, ага жаңы ат коюп, low_fuses маанисин өзгөртүүңүз керек болот.

Менин жаңы тактам мындай көрүнөт:

###################################################### #############Arduino Uno негизинде#Өзгөртүүлөр:#төмөн_фузиялар 0xffтен 0xbfке өзгөртүлүп, 16 МГц саатты иштетүү үчүн Atmega PB0/pin 14 = Arduino D8

clkuno.name = Саат чыкпайт (Arduino Uno)

clkuno.upload.protocol = arduino clkuno.upload.maximum_size = 32256 clkuno.upload.speed = 115200 clkuno.bootloader.low_fuses = 0xbf clkuno.bootloader.high_fuses = 0xde clkuno.bootloader.extended_toots cluno.bootloader.file = optiboot_atmega328.hex clkuno.bootloader.unlock_bits = 0xff clkuno.bootloader.lock_bits = 0xcf clkuno.build.mcu = atmega328p clkuno.build.f_cpu = 16000000L clkuno.build.core.core

##############################################################

Белгилей кетчү нерсе, сааттын чыгышы анын контролдук битин 0 коюу менен иштетилет.

Такта конфигурация файлында жаңы тактаны түзгөндөн кийин, сиз жаңы жүктөгүчтү Atmega күйгүзүшүңүз керек болот. Мунун ар кандай жолдору бар, мен https://www.arduino.cc/en/Tutorial/ArduinoToBreadboardдо сүрөттөлгөн ыкманы колдондум.

Муну аткаргандан кийин, сиз Atmega программасын жүктөп жатканда Arduino Uno эмес, жаңы тактаңыздын түрүн тандап алууну унутпаңыз.

6 -кадам: Программалык камсыздоо

Программалык камсыздоо
Программалык камсыздоо

Кээ бир программаларды кошуу менен дудук аппаратты акылдуу кылууга убакыт келди.

Бул жерде прототип үчүн жасалма код бар:

lastReceivedTime = 0

lastReceivedCmd = none cmdTimeout = 100 орнотуу () {көзөмөлдөөчү D4-D7 казыктарын конфигурациялоону иштетүү ЧЫГАРУУ ЧЫРЛАРЫН ЧЫКТЫРУУ ЖАНАН} цикл () {күзөтчүнү баштапкы абалга келтирүү (CAN билдирүүсү алынган болсо) {ар бир баскычтын буйругу үчүн {эгер CAN билдирүүсү тиешелүү болсо баскычтын буйругу {lastReceivedTime = now lastReceivedCmd = cmd}}} эгерде азыр> lastReceivedTime + cmdTimeout {lastReceivedCmd = none} ар бир баскычтын буйругу үчүн {if lastReceivedCmd - бул баскычтын буйругу {set command pin output = on} else {set command pin output = off }}}

cmdTimeout чыгарылган акыркы активдүү баскычты карап чыгууга чейин канча убакыт күтүшүбүз керектигин чечет. Баскыч CAN билдирүү командалары болжол менен ар 70 мс жөнөтүлгөндүктөн, ал бир аз маржа менен караганда чоңураак болушу керек. Ал эми чоң болсо, артта калуу тажрыйбасы болот. Ошентип, 100 мс жакшы талапкер окшойт.

Бирок күзөтчү деген эмне? Бул авария болгон учурда бизди куткара турган пайдалуу кичинекей аппараттык өзгөчөлүк. Бизде ката бар деп ойлоп көрүңүз, программанын көлөмүн жогорулатуу буйругу активдүү. Ошондо биз стерео менен максималдуу үн менен бүтмөкпүз! Бирок эгерде күзөтчү белгилүү бир убакытка баштапкы абалга келтирилбесе, ал күтүлбөгөн нерсе болгонун чечет жана жөн эле баштапкы абалга келтирет.

жараксыз орнотуу ()

{// wdt_enable (WDTO_250MS) цикли үчүн эң көп 250 мс уруксат берүү; // башка баштапкы нерселер} void loop () {wdt_reset (); // нерселерди жаса}

ЧЫКТАБЫ? Ооба, сиз CAN контроллерин фильтрге дал келбеген бардык билдирүүлөрдү жокко чыгарууга конфигурациялай аласыз, андыктан программалык камсыздоо бизге маани бербеген билдирүүлөргө убакыт коротпойт.

белгисиз узун маска = 0x1fffffff; // Бардык 29 баш битти маскага кошуу

кол коюлбаган узун filterId = 0x0400066; // Биз бул CAN билдирүүсүнө id m_can.init_Mask гана маани беребиз (0, CAN_EXTID, маска); // 0 маска 0-1 m_can.init_Mask чыпкасына тиешелүү (1, CAN_EXTID, маска); // 1-маска 2-5 m_can.init_Filt чыпкасына тиешелүү (0, CAN_EXTID, filterId); m_can.init_Filt (1, CAN_EXTID, filterId); m_can.init_Filt (2, CAN_EXTID, filterId); m_can.init_Filt (3, CAN_EXTID, filterId); m_can.init_Filt (4, CAN_EXTID, filterId); m_can.init_Filt (5, CAN_EXTID, filterId);

CAN китепканасынын кодун жана CAN контролерунун документтерин текшерип, чыпка + масканы кантип орнотуу керектиги жөнүндө көбүрөөк маалымат алыңыз.

Ошондой эле CAN контроллерин билдирүү (фильтрленбеген) алынганда үзгүлтүккө учуратуу үчүн орнотсоңуз болот. (Жогорудагы мисалга киргизилген эмес, бирок ал үчүн менин программамда кандайдыр бир код бар.) Бул учурда ал эч кандай мааниге ээ эмес жана эгер сиз программалоого көнбөсөңүз, түшүнүксүз болуп калышы мүмкүн.

Ошентип, бул кыскача программанын прототиби болчу. Бирок бизге симулятор тактасы үчүн дагы код керек:

lastSentTime = 0

minDelayTime = 70 setup () {A0-A5 төөнөгүчтөрүн конфигурациялоочу пиндер катары D4-D7 төөнөгүчтөрүн ички тартма менен кирүү казыктары катары конфигурациялоо. init CAN} loop () {send "junk" can send msg set activeButton = none for each button {if button is pressed {set activeButton = button}} if activeButton! = none {if now> lastSentTime + minDelayTime {send button command can send message } lastSentTime = now} invalid = pin A7 foreach (cmd) {if (min <invalid <max) {led on} else {led off}} 1 мс күтүңүз}

Бул үзгүлтүксүз "керексиз" CAN билдирүүлөрдү жөнөтөт, болжол менен ар бир мс жана бир баскыч ар бир 70 мс тиешелүү баскычты басканда.

Ар бир баскычка тиешелүү мин жана максималдуу өзгөрмөлөргө ылайыктуу баалуулуктарды билүү үчүн ар кандай баскычтарды басып жатканда A7 пинге кирүүнү жазышыңыз керек болот. (Же сиз аны эсептей аласыз, бирок иш жүзүндө киргизүүнү окуу сизге так баалуулуктарды берет.)

Сиз пин режимдерин программалоодо бир аз этият болушуңуз керек. Эгер сиз кокусунан ички тарткычты чыгуучу казык катары колдонууну пландап койсоңуз, анда сиз жогорку өндүрүмдү койгонуңузда Arduinoңузга зыян келтире турган потенциалдуу кыска жолду түзөсүз.

Эгерде сиз менин программаларымды текшергиңиз келсе, бул жерден жүктөп алсаңыз болот:

  • CAN билдирүүлөрдү каттоо программасы
  • Симулятор тактасы үчүн программа
  • Прототип / акыркы такта үчүн программа

Сиз билишиңиз керек, бул программалар бул жерде псевдокодго дал келбейт, аларда "кошумча" нерселер көп, жана алар объектке багытталган программалоо менен тааныш эмес болсоңуз, аны окуу бир аз кыйын болушу мүмкүн..

7 -кадам: Акыркы жабдык

Акыркы жабдык
Акыркы жабдык
Акыркы жабдык
Акыркы жабдык
Акыркы жабдык
Акыркы жабдык

Программаңызга канааттанганыңызда (симулятор тактасы менен акыркы тестирлөөдөн кийин машинада прототипти сынап көрүүнү унутпаңыз), чыныгы жабдыкты курууга убакыт келди.

Бул жерде сизде үч вариант бар:

  • Тез жана кир - нерселерди ПХБ прототип тактасына чогуу ширетүү.
  • Hardcore DIY - өз PCB этч.
  • Жалкоо жол - компоненттерди ширетүү үчүн профессионалдуу ПХБга буйрук бериңиз.

Эгер шашпасаңыз, мен акыркы вариантты сунуштай алам. Эгер сизге ушундай кичинекей ПХБ керек болсо, аны Кытайдан заказ кылуу өтө арзан. (Ошондо сиз онго жакын бөлүккө ээ болосуз, андыктан кээ бир ширетүү каталарын төлөй аласыз.)

ПКБга заказ кылуу үчүн дизайныңызды Gerber форматында жөнөтүшүңүз керек болот. Бул үчүн ар кандай программалар бар. Мен сунуштай ала турган Бүркүттү колдондум. Аны үйрөнүү үчүн бир нече саат күтүүгө болот, бирок анда ал жакшы иштейт. Ушуга окшогон кичинекей такталар үчүн акысыз колдоно аласыз.

Дизайнды жасоодо этият болуңуз. Туура эмес кылганын билүү үчүн жеткирүүнү төрт жума күткүңүз келбейт.

(Эгерде сизде жакшы ширетүү жөндөмү бар болсо, анда сиз үстүңкү бетине орнотулган компоненттерди иштеп чыгып, кичинекей адаптерди ала аласыз. Мен андай кылган жокмун.)

Андан кийин, мис. https://www.seeedstudio.com/fusion_pcb.html. Дизайныңыздан Gerber файлдарын кантип түзүү боюнча нускамаларды аткарыңыз. Ошондой эле, анын жакшы экенине ынануу үчүн, жыйынтыкты алдын ала көрө аласыз.

(Акыр-аягы, схемадагы сүрөттө көрсөтүлгөндөн башка R4-R7 үчүн башка резисторлорду тандоо керек болчу. Анын ордуна 2k, 4.7k, 6.8k жана 14.7k колдондум.)

Эсиңизде болсун - Atmega пин номерин Arduino пин номери менен чаташтырбаңыз!

Мен сизге Atmega чипин түздөн -түз ширетпөөнү, бирок розетканы колдонууну сунуштайм. Андан кийин аны кайра программалоо керек болгон учурда оңой эле алып салсаңыз болот.

8 -кадам: Унаа орнотуу

Унаа орнотуу
Унаа орнотуу
Унаа орнотуу
Унаа орнотуу

Эми эң кызыктуусу - аны машинаңызга минип, колдоно баштаңыз! (Сиз бул үчүн кап даярдап / сатып алгандан кийин.)

Эгер сиз машинаңыздын прототипин толугу менен сынап көргөн болсоңуз, анда баары идеалдуу иштеши керек.

(Жогоруда айтканымдай, мен анча -мынча резисторлорду алмаштырып, программамды өзгөртүүгө туура келди.)

Ошондой эле, аны стереонун артына же башка жерге орнотуу керекпи, ойлонуп көрүңүз. Мен кол каптын үстүнөн жакшы бир жерди таптым, ага кол каптын ичинен эч нерсе ажыратпай туруп жете алам. Кийинчерээк жаңыртууну чечсем, бул пайдалуу болушу мүмкүн.

Акыры менин баскычтарым кайра иштеп жатат! Кантип мен аларсыз эки ай жашай алам?

9 -кадам: Келечектеги жакшыртуулар

Жогоруда айтылгандай, эгер мен анын 2.0 версиясын жасасам, анда мен ийкемдүүлүк үчүн 4066Bны башка нерсеге (балким, санарип потенциометрге) алмаштырам.

Сиз кыла турган дагы көптөгөн нерселер бар. Мисалы Bluetooth модулун кошуп, телефонуңуз үчүн алыстан башкаруу колдонмосун жасаңыз. Же GPS модулу, анда сиз үйгө жакын болгондо, автоматтык түрдө үнүңүздү жогорулатып, "терезелерди түшүрүү" БИЛДИРЕ аласыз, ошондо бардык кошуналарыңыз сиздин сонун музыкаңыздан ырахат алышат.

Сунушталууда: