Мікракантролеры - Маладыя пытанні

  • Як вызначыць, колькі датчыкаў мікракантролер можа выкарыстоўваць?
  • Наколькі я разумею, вы не можаце выкарыстоўваць C# непасрэдна на любы мікракантролер, але вы можаце выкарыстоўваць C# і сувязь па USB і шукаць для канкрэтнага порта. як яно ёсць сапраўды

У маім выпадку я звузіў да трох наступных мікракантролераў:

  • Arduino
  • Netdurino
  • AVR

Гэта тое, што я спрабую зрабіць у якасці першага праекта і, вядома ж, гэта не можа быць простым праектам.

Я хачу, каб мець магчымасць падключыць тэрмометр і калі ступені атрымліваюць + -3 базавай тэмпературы адкрыць або зачыніць акно прапелера. Акрамя таго, я хачу, каб мець магчымасць захоўваць інфармацыю тэрмометра ў базе дадзеных MySql.

Такім чынам, у асноўным, калі тэмпература падставы 80, калі тэмпература перавышае 83 Я хачу, каб падштурхнуць адкрыць акно. І калі яго 77 Я хачу, каб закрыць акно.

Im не зацікаўленыя ў дакладнай механізме, які адкрывае і закрывае акна, так як адпраўляць сігналы, каб адкрыць або зачыніць яго.

7
@ChrisStratton Я падазраю, ОП прашу аб прывядзенні ў дзеянне фізічнага вокны падперлі адкрытай нейкі чынам, і зачыняюся пры перамяшчэнні прапіць/прывада.
дададзена аўтар Anindo Ghosh, крыніца
Праверце гэты набор мікракантролера. Гэта бесправоднае і мае мае датчык тэмпературы ўжо ўбудаваны ў яе, які можна адправіць па бесправадным канале на прыёмнік. Яшчэ лепш, уключаны прыклад кода робіць гэта для вас. ti.com/tool/ez430-rf2500
дададзена аўтар Hello World, крыніца
Проста FYI, Arduino і Netdurino з'яўляецца распрацоўка платы і не мікракантролеры. Arduino грунтуецца на AVR і Netduino заснаваны на STM32F мікракантролера
дададзена аўтар user9409, крыніца

5 адказы

<�Моцны> Мікракантролер інфармацыя:

У той час як Netduino робіць выкарыстанне C#, большасць іншых мікракантролераў праграмуюцца ў C - гэта два цалкам розных моў праграмавання. Акрамя таго, Arduino выкарыстоўвае версію C ++, якая адрозніваецца яшчэ.

Мікракантролеры, як правіла, запраграмаваныя ў C або ў зборцы (ASM). Калі вы пачатковец, я б рэкамендаваў C. Arduino не з'яўляецца мікракантролер, гэта дошка развіцця (як правіла) на аснове вакол AVR мікракантролера, хоць іншыя мікракантролеры ў выкарыстанні. На борце мікракантролеры (мікракантролер адзінак) будзе ўсталяваны загрузнік. Гэта спецыяльны раздзел кода, які змяняе, як працуе MCU. У выпадку Arduino, яна дазваляе праграмаваць праз паслядоўны порт, у адрозненне ад стандартных метадаў праграмавання, а таксама доступ да спецыяльных функцый бібліятэкі. Акрамя таго, на плаце (як правіла) быць USB-паслядоўны пераўтваральнік, так як многія дробныя чыпы не маюць ўнутранага абсталявання USB, таму USB павінен быць ператвораны для належнай сувязі.

<�Моцны> Пытанне 1:

MCU будзе мець пэўную колькасць кантактаў ўводу/высновы. Гэтыя кантакты, якія могуць быць ўваходамі або выхадамі. Вы можаце наўпрост падключыць столькі лічбавых датчыкаў, як ёсць парты ўводу/высновы, але аналагавыя датчыкі абмежаваныя лікам АЛП (аналога-лічбавы пераўтваральнік) кантакты даступныя. Не ўсе мікракантролеры маюць блок АЛП. Вы таксама можаце падключыць шмат, шмат больш датчыкаў, з дапамогай знешніх пашыральнікаў GPIO або паралельна ў паслядоўных, з рэгістраў. Гэта можна кіраваць з дапамогай некалькіх MCU шпількі і можа значна пашырыць колькасць кантактаў ўводу/вываду даступных.

<�Моцны> Пытанне 2:

Вы будзеце пісаць праграму на кампутары, на якім усталяваны на MCU. Калі код дазваляе вам мець знешнія сувязі (праз USB, паслядоўны порт SPI, I2C і г.д.), то вы можаце звязацца з чыпам у той час як ён працуе. Але гэтая здольнасць залежыць ад кода, які вы пішаце. Якая мова вы карыстаецеся для зносін з MCU ў значнай ступені адкрытыя да таго, што вам падабаецца, так як на самой справе сувязь робіцца апаратнымі сродкамі, а не мова праграмавання. Можа быць, гэта тое, што вы мелі на ўвазе пры згадванні аб «C #».

<�Моцны> Ваш праект:

Рэальна, ваш праект не гучыць так складзены: чытаць датчык тэмпературы (гучыць як аналагавыя) і кіраваць рухавіком, каб адкрыць/закрыць акно на аснове гэтага счытвання датчыка. Калі спыніць рухавік, верагодна, будзе заснаваны на іншым датчыку, прымацаванага да акна. Гэта можа быць зроблена з вельмі невялікім MCU з некалькімі шпількамі і мала памяццю праграм (напрыклад, ATtiny24 або ATtiny25). Але я думаю, што вы сутыкнецеся з вялікай колькасцю праблем, калі вы не працуеце над чым-то трохі менш, у першую чаргу. Стандарт «прывітанне свет» у мікракантролерах з'яўляецца міргаць святлодыёд. Затым пабудаваць на тым, што, спрабуючы кантраляваць хуткасць лыпання з дапамогай кнопкі, а затым кіраваць рухавіком і г.д.

<�Моцны> Асабістае меркаванне ...

Я гэтага не зрабіць, ні ў мяне ні найменшага жадання калі-небудзь выкарыстоўваць Arduino. Я будую ўсе мае ўласныя схемы, як правіла, з AVR мікракантролерамі, але я разумею, чаму людзі выкарыстоўваюць іх. Асабіста я лічу, што гэта значна лепш, каб даведацца, як стварыць свой уласны контур і праграмаваць яго, чым скапіяваць код іншых людзей і адзінкавыя разам выпадковыя рэчы - што гэта тое, што я бачу, большасць Arduino карыстальнікаў робяць. Ёсць шмат онлайн-урокаў для пачатку працы з мікракантролерамі, якія не звязаны з Arduino, якая з'яўляецца тое, што я хацеў бы прапанаваць вам разгледзець, калі ў вас ёсць якія-небудзь планы па распрацоўцы ўласных схем у будучыні. Калі ў вас няма жадання даведацца што-небудзь, то ўсе сродкі, капіяваць далёка, але майце на ўвазе, што часцяком значна прасцей і больш эфектыўныя спосабы рабіць рэчы, якія вы ніколі не будзеце спасцігаць, калі вы не ведаеце, што адбываецца.

10
дададзена
З пункту гледжання апаратнага забеспячэння сумяшчальны платформы Arduino ня трэба хаваць не болей, чым любы іншы мінімальнай схемы - гл макетаванне падручнік. Большая частка абстракцыі знаходзіцца на баку <�я> праграмнае забеспячэнне .
дададзена аўтар Andrew Walker, крыніца
Гэта пачынаецца з памылковым меркаваннем. Наяўнасць Netduino ў спісе прыладаў з'яўляецца канкрэтная спасылка на ўбудаваны мікракантролер працуе C# код.
дададзена аўтар Andrew Walker, крыніца
-1 для Arduino сланца. Для тых, хто больш зацікаўлены ў праграмным забеспячэнні і «вытворца» тып рэчы, як мастакі, і г.д., няма наогул нічога дрэннага не вывучаючы ўсе тонкасці MCU архітэктуры, складанай фізічнай схемы і г.д. Некаторыя акварыумістаў праграмна-арыентаваныя, некаторыя апаратныя - некаторыя як, некаторыя проста хочуць нешта, каб працаваць з мінімальным высілкам/разуменне. Там няма нічога дрэннага ўзлом чужога кода, каб атрымаць што-то працуе хутка, нават калі вы не разумееце, усё гэта.
дададзена аўтар Brad, крыніца
Захоўванне інфармацыі можа быць крыху больш складана, але не немагчыма. Абмен дадзенымі праз USB ня лёгка, але можа быць зроблена, калі вы ведаеце, што вы робіце. Замест таго, каб пісаць код для USB (гэта вельмі складана ...) Я прапанаваў бы выкарыстаць USB для паслядоўнага пераўтваральніка мікрасхемы і мець зносіны праз паслядоўны замест гэтага. Гэта значна, значна прасцей кода і пастаўляецца ў якасці стандартнага ўнутранага абсталявання на даволі многіх мікракантролерах. Але, як я ўжо адзначаў, USB канвэртар чып пастаўляецца на многіх платах на Arduino, таму што, як яны запраграмаваныя.
дададзена аўтар Olivier, крыніца
Добры выклік. Я не знаёмы з гэтым адзін.
дададзена аўтар Olivier, крыніца
@ Брэд: Я ніколі не казаў, што там было нешта не так з ім. Я разумею, што некаторыя людзі не клапоцяцца пра абсталяванне, і гэта цалкам нармальна. Я проста сказаў, што калі хто-то любы зацікаўлены ў распрацоўцы схемы (МС) у будучыні, гэта будзе варта намаганняў, каб пачаць з голай чып замест дошкі развіцця. Акрамя таго, «тонкасці архітэктуры MCU» не мае нічога агульнага з ім. Мяне не хвалюе, што адбываецца ў крэмнію, але калі вы паглядзіце на табліцу і даведацца трохі для сябе, вы не будзеце мець ні найменшага падання, што чып можа зрабіць, толькі тое, што іншыя людзі зрабілі з ім.
дададзена аўтар Olivier, крыніца
@ Крыс Stratton, я быў свайго роду думаць, што ...
дададзена аўтар Olivier, крыніца

Выбар паміж платформамі

  • Arduino is an open source platform built (mainly) around on AVR (ATmega) chips, with one exception: the Arduino Due is built around as Cortex-M3 CPU. It is programmed in C, C++.
  • Netduino is a platform built around Cortex-M3 and Cortex-M4 chips. It is programmed in C#
  • AVR is a family of microcontrollers by Atmel, programmed in C, C++, or Assembly. The microprocessors are at the heart of most (but not quite all) Arduinos.

Які з іх вы вылучыце гэта пытанне асабістага густу. AVR з'яўляецца больш нізкім узроўнем thatn Arduino, так што калі вы толькі пачынаеце, Arduino, безумоўна, прасцей пачаць з хутка. Netduino ёсць вы сапраўды хочаце C#, аднак, Arduino лепш падтрымліваецца, чым Netduino.

Спалучэнне з ПК паслядоўны порт/порт USB

На баку ПК, незалежна ад таго, што вы абралі, вы будзеце мець магчымасць ўзаемадзейнічаць з вашай Arduino/Netduino/голае AVR чыпа/ланцуга праз паслядоўны порт/USB. На баку ПК вы можаце выкарыстоўваць любы мова праграмавання вы хочаце да тых часоў, як ён дае вам доступ да паслядоўным партоў. Як гэта будзе працуе так, што Arduino/Netduino/голае AVR будзе чытанне/запіс ад паслядоўнага порта USB/і так будзе ваша праграма PC. Сувязь варта.

На укладзенай баку, большасць рэчаў, якія вы лічыце будзе мець USART, а гэта азначае паслядоўны канал сувязі ўстанаўліваюцца. Тым не менш, чалавек чысты AVR чыпы не маюць порт USB, самі па сабе з скрынкі: вы павінны будзеце пабудаваць падтрымку USB праз асобны контур, хоць, як Kurt E Clothier паказвае якой AVR чыпы маюць убудаваную падтрымку USB . Некалькі AVR чыпаў не маюць USART убудаванае, але вы, верагодна, не забраць іх.

вымярэння тэмпературы

As far as вымярэння тэмпературы, all of the platforms you suggested will give you the capabilities for doing that. Reading a temperature can be as simple as reading an ADC if you are using LM34 or an LM35 temperature sensor. On Arduino this is accomplished with one line: myReading = analogRead(pinNumber); You will have to transform the temperature reading into actual temperature, but this is not particularly difficult.

маторы

The маторы a bit more complicated: for most (almost all) маторы your Arduino/Netduino/AVR chip will not be able to drive the motor directly. You will need at least a MOSFET/BJT switch (see here for more info) and a snubber diode, or, more robustly a motor driver circuit. The Arduino platform has a large variety of peripherals (in general called shields, though Olin prefers the term daughterboard) including a motor shield. If you are using a high-power motor this is the way to go.

4
дададзена
@ KurtE.Clothier: Дзякуй за гэтую спасылку. Фармулёўкі пра пачатак працы прыстрэльваюць: што вы думаеце?
дададзена аўтар Indramani, крыніца
@jippie: Вы, вядома, правільна, сэр. Гэта быў мозг-о (напрыклад, памылка друку, але пры няспраўнасці галаўнога мозгу)
дададзена аўтар Indramani, крыніца
Чаму там analogRead калі digitalRead робіць тую ж працу?
дададзена аўтар La raison, крыніца
Nice тлумачэнне, хоць я не згодны з вашымі думкамі аб Arduino вызначана быць прасцей. Я цвёрда веру, што прымаючы дадатковыя бітае час наперад, каб даведацца, што адбываецца дапаможа вам велізарнае ў будучыні. Выкарыстанне Arduino істотна абмяжоўвае магчымасці праектавання. Але зноў жа, гэта не толькі маё меркаванне - не больш пэўныя, чым ваша. Яшчэ адна рэч, ёсць некаторыя AVR мікрасхемы, якія маюць убудаваныя USB, напрыклад: hackaday.com/2011/08/07/1-chip-usb-avr-development
дададзена аўтар Olivier, крыніца
Выглядае добра для мяне.
дададзена аўтар Olivier, крыніца

Netduino запускае версію .NET выканання, вядомае як «мікра» падчас выканання IIRC. Вы пішаце код на C#, і яна будзе інтэрпрэтавацца на Netduino. У Netduino пастаўляецца з бібліятэкамі для доступу да розных функцый мікракантролера, і гэтыя бібліятэкі напісаны ў С. C# кода вы пішаце, будзе вельмі павольным, каб выканаць, хоць код бібліятэкі хутка. Я пішу C# код для жыцця, але я не думаю, што Netduino з'яўляецца выдатным выбарам для мікракантролера; гэта цяжэй выкарыстоўваць, чым Arduino ў пэўным сэнсе, мае значна менш падтрымкі (менш прыклад кода, менш сумяшчальныя прылады), і каштуе даражэй. Я таксама не думаю, што C#, з'яўляецца правільнай мовай для кантролераў.

Я рабіў праекты на заказ напісаны код для Арн і іншых праектаў з Arduinos. Калі вы толькі пачынаеце з Arduino мае масу пераваг, і адзіным недахопам з'яўляецца высокі кошт, чым неапрацаванага AVR.

Я рэкамендую паглядзець на некаторыя з ўвядзення для AVR і для Arduino. Я думаю, што дасць вам добрае ўяўленне пра тое, які з іх лепш для вас.

2
дададзена
<�Р> Як вызначыць, колькі датчыкаў мікракантролер можа выкарыстоўваць

Гэта будзе залежаць ад таго, як творчых вы можаце быць і колькі iopins ў вас ёсць у наяўнасці, і колькі штырьков датчык патрабуе. Калі ў вас ёсць 4 датчыка 3pin, што не абавязкова азначае, што вам патрэбна 12 шпількі, каб кіраваць імі, вы можаце мультыплекс іх і выкарыстоўваць 5 штыфтоў і захаваць 7 -х штыфты. Так што ўсё гэта сапраўды залежыць. Але адзін спосаб глядзець на яго ёсць, як шмат даступных IO шпількі ў вас ёсць, і колькі шпілек робяць вашы датчыкі патрабуе, гэта дасць вам нізкі ліміт на колькі вы можаце. Крэатыўнасць, вопыт і разуменне таго, як усё працуе, можа павялічыць колькасць датчыкаў.

<�Р> Мой зразумець, вы не можаце ўбудоўваць C# непасрэдна на любы мікракантролер, але вы можаце выкарыстоўваць C# і мець зносіны праз USB і глядзець на пэўны порт гэта?

У той час як я не зрабіў шмат USB, я ведаю, што калі вы робіце USB з нуля, што будзе ўключаць у сябе напісанне драйвераў на хост-машыне. Больш папулярным спосабам з'яўляецца выкарыстанне IC, які ўжо апрацоўвае ўсе USB-пратаколу і драйверы, і ён паводзіць сябе як паслядоўны порт на вашым кампутары. Вы ў асноўным маюць USB-Serial мост, які можа звязаць у паслядоўны порт вашага мікракантролера. Я лічу, што Arduino робіць гэта. Не ўпэўнены, што Netduino. Так што так, вы можаце выкарыстоўваць C# для сувязі праз USB праз пэўны порт (пры ўмове, што вы робіце гэта лёгкі шлях і з дапамогай USB-Serial моста).

Што вы прапануеце зрабіць, гэта, безумоўна, магчыма. Вы можаце напісаць праграму, якая ўзаемадзейнічае з базай дадзеных і якія могуць адпраўляць і атрымліваць паслядоўныя дадзеныя вашага мікракантролера.

1
дададзена
@ User2278106 Motors патрабуе большага току, чым тыповы мікра можа забяспечыць. Вы, хутчэй за ўсё, патрэбен драйвер рухавіка або якой-небудзь падобнае рашэнне (скажам, Н-мост). Выбар рухавіка дыктуецца механічнымі патрабаваннямі сістэмы (колькі крутоўны момант патрабуецца, каб адкрыць/закрыць акно, і як хутка вы хочаце, каб адкрыць/закрыць), а таксама драйверы выбраны/распрацаваны пасля выбару рухавіка
дададзена аўтар Ryan Ginstrom, крыніца
Любы рухавік на самай справе. Кожны рухавік павінен быць пад кантролем, і ў залежнасці ад рухавіка, які можа вар'іравацца ў залежнасці ад мадэлі, тыпы, і г.д .. Пасля таго, як вы ведаеце, як кіруецца рухавік, вы павінны стварыць схему (адна мікракантролер не дастаткова добра), які ўзаемадзейнічае мікракантролер з рухавіком.
дададзена аўтар user9409, крыніца
дзякуй за адказ. Я магу бачыць на SparkFun яны маюць кантралёры і тэрмометр, але які тып рухавікоў працуюць eith мікракантролера?
дададзена аўтар Zardos, крыніца

Каб адказаць на пэўную кропку, мікракантролер можа мець presumingly (вельмі вялікі лік) датчыкі, прымацаваныя. З дапамогай датчыкаў шыны, як I2C, SPI, адзін провад, паслядоўны порт, ці любых іншых пратаколы шыны, дазволіць вам мець х шмат на аўтобус, дзе х з'яўляецца мяжой для дадзенага аўтобуса. Вы павінны прытрымлівацца некаторых тэхнічных спецыфікацыям для праводкі аўтобуса, і з некалькімі з адной і той жа шыны, могуць пашырыцца яшчэ больш.

Лімітавае сапраўды з пункту гледжання хуткасці і практычнасці. Я мог бы тысячу датчыкаў на адным Arduino, але я мог ўлада, чытаць, апрацоўваць і адлюстроўваць гэтую інфармацыю ў разумныя тэрміны? Можа быць, залежыць ад таго, наколькі добра вы можаце закадаваць ці як творчыя вы атрымліваеце.

Нават аналагавыя датчыкі можна зрабіць так, з дапамогай мультыплексараў ці АЛП мікрасхемы. Лепш пытанне не «колькі датчыкаў мікракантролер можа выкарыстаць», але «колькі датчыкаў ці трэба мне» і ўзяць яго адтуль.

1
дададзена