
Мазмуну:
2025 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2025-01-23 14:51

Жумуш ордумдан көп сандаган жараксыз айлануучу оптикалык кодерлерди алып, акыры алар менен кызыктуу/пайдалуу нерсе кылууну чечтим.
Мен жакында эле үйүмө жаңы 3D принтер сатып алдым жана аны 3D сканерден артык эмне мактаса болот! Бул долбоор мага керектүү тетиктерди чыгаруу үчүн 3D принтеримди колдонууга эң сонун мүмкүнчүлүк берди.
Жабдуулар
Оптикалык кодерлер жана тиешелүү оптикалык сенсорлор
Arduino UNO
кошумча прототип калканы
болоттон жасалган рельстер
3D принтерге кирүү
1 -кадам: Оптикалык коддогучтар



Бул проект үчүн дээрлик бардык ротациялык кодер колдонулушу мүмкүн, эгерде ал сизге мм үчүн салыштырмалуу көп "чыкылдатууну" камсыз кылса. Албетте, башка коддогучтар ылайыктуу монтаж чечимин талап кылат.
Мен фото-сенсорлордун туташуу схемасын байкоо үчүн үзгүлтүксүздүк өлчөгүчтү колдондум.
2 -кадам: 3D басылган бөлүктөр


Бул бөлүктөрдө айлануучу коддогучтар жайгашкан жана темир жол үчүн слайд камсыз кылынат. Жалгыз коддоочу корпустун артында кайчылаш рельстерди орнотуу үчүн эки тешиги бар. Кош коддогуч корпусу жөн гана туура бурчта бириктирилген эки жалгыз корпус.
Мен бул тоолорду fusion360 боюнча коддогучтарды жана рельстерди тандап алуу үчүн иштеп чыккам, коддогучтун огунда дат баспас болоттон жасалган валды жакшыраак кармоо үчүн, анын кыска сабы резина кабыгы бар.
Сиз валдын эркин жылышын жана корпустун тигинен кармалышын каалайсыз, бирок ал тайып кетпеши үчүн кодерге жетиштүү басым жасашы керек. Мен үчүн иштеген нерсе, валдын слайдынын коддогучтун огу менен 0,5 мм капталуусуна уруксат берүү болчу. Калкан резинасы ошол өлчөмдө деформацияланууга жана жакшы тартылууга жетиштүү жумшак.
3 -кадам: Электр схемасы

Район абдан жөнөкөй. Опто-сенсорлор IR эмитент диоддору үчүн бир аз токту, фотодиоддор үчүн жерге жана тартылуучу каршылыкты талап кылат.
Мен сериядагы эмиттер диоддору үчүн 5мАны чечтим, бул өзгөчө кодерде диоддордун чыңалуусунун төмөндөшү 3.65В. Мен Arduinoдон 5 В резервуарды колдонуп жатам, ал резистор үчүн 1.35 В калтырат, 5 мАда бул 270 Ом болуп чыгат.
Фото-диоддор кичинекей токту батыра тургандыктан тартуу үчүн 10к Ом тандалды, баскыч үчүн 10k Ом да колдонулду. Жерге туташкан прототип тактасында колдонуу үчүн жеткиликтүү баскыч бар, аны жөн эле тартылуу каршылыгы менен камсыздап, керектүү киргизүү пинине зым менен байланыштырыңыз.
4 -кадам: Arduino коду



Код бир аз түшүндүрмөгө муктаж, анткени анын иштеши дароо эле билинбеши мүмкүн, бирок аны тез арада 3 коддогучту иштетүү үчүн оптималдаштыруу керек болчу.
Биринчиден, биз эгерде коддогучтун абалында өзгөрүү болгон болсо, анда биз багыт маалыматын гана иштетүүнү каалайбыз.
өзгөрүүлөр = new_value ^ сакталган мааниси;
Менин коддогучтарымдан көбүрөөк чечим алуу үчүн, мен өсүп бараткан жана түшкөн четин иштетүүгө туура келди.
Менин орнотуумда менин чечимим 1см үчүн 24 чыкылдатуу.
Бул бизге бир нече сценарийлерди калтырат.
S1 туруктуу 0 жана S2 0дон 1ге которулат
S1 туруктуу 0 жана S2 1ден 0гө которулат
S1 туруктуу 1 жана S2 0дон 1ге которулат
S1 туруктуу 1 жана S2 1ден 0гө которулат
S2 туруктуу 0 жана S1 0дон 1ге которулат
S2 туруктуу 0 жана S1 1ден 0гө которулат
S2 туруктуу 1 жана S1 0дон 1ге которулат
S2 1 туруктуу жана S1 1ден 0гө которулат
Бул шарттар жогорудагы чындык таблицаларында жакшыраак түшүнүлөт, ошондой эле ар бир шарт 0 же 1 деп өзүм билемдик менен "багыт" берет.
Диаграммалар бизге эки маанилүү кеңеш берет:
1) бир диаграмма экинчисине таптакыр карама -каршы келет, андыктан бизде бирөө болсо, биз чыгууну тескери буруп, экинчисин оңой эле эсептей алабыз. Биз бир пин өзгөрүп, экинчисин өзгөртпөсөк гана чыгууну тескери бурабыз, биз каалагандай тандап алабыз.
2) диаграмманын өзү S1 жана S2 сигналдарынын XOR гана. (башка диаграмма бул ЭМЕС).
Эми кодду түшүнүү жөнөкөй.
// ПОРТТО параллелдүү түрдө окуу // чектеш түгөйлөр бир эле коддогуч абалына таандык экенин унутпаңыз = PINB & 0x3f; // кандай пинтер өзгөрдү, эгерде diff = hold ^ state; // чындыктын таблицасын алуу үчүн XOR чектеш S1 жана S2 сигналдары // эң оңой жолу - учурдагы абалдын көчүрмөсүн // жана аны бир аз издөө менен оңго жылдыруу = абал >> 1; // азыр биттер XOR dir = search ^ state үчүн тегизделди; // эсиңизде болсун, эгерде кирүүлөрдүн бири туруктуу бойдон калса, анда таблицаны тескери буруш керек, бул үчүн бизге IF // билдирүүсүнүн кереги жок. Учурда керектүү багыт бит // "dir" өзгөрмөсүндөгү ар бир жуптун оң колу // сол колунун мааниси жок // "diff" өзгөрмөсүндө "set" өзгөртүлгөн бит бар // ошондуктан бизде да бар '01' же '10' // XOR муну 'dir' байт менен же // тескери бурат, же мааниге ээ эмес. dir ^= diff; // азыр hold өзгөрмөсүн hold = state жаңыртуу; // эгерде бул коддоочу үчүн бит да өзгөрсө if (diff & 0x03) {// багытын аныктоо, эгерде (dir & 0x01) {// сиздин программаңызга жана зымыңызга негизделген болсо ++ же --z; } else {++ z; }} // калгандары үчүн, эгерде (diff & 0x0c) {if (dir & 0x04) {++ y; } else {--y; }} if (diff & 0x30) {if (dir & 0x10) {--x; } else {++ x; }}
Кнопка басылганда, биз учурдагы XYZ баасын терминалдык программага жөнөтөбүз.
Сериялык маалыматтар жай, бирок кадимки иштөө учурунда бул убакыттын ичинде коддогучтардын абалы өзгөрбөйт.
Маалыматтар чийки эсеп катары жөнөтүлөт. Сиз математиканы жасай аласыз жана маалыматтарды мм же дюймда ж.
5 -кадам: Биринчи скандоо




Упайларды чогултуу жай процесс, мен иликтөөнү сол жактын жогорку бурчуна коюп, Arduino'ду баштапкы абалга келтирем.
Бул үйдүн абалын нөлгө теңейт.
Андан кийин иликтөөнү бутадагы жерге жылдырыңыз, бир калыпта кармап туруңуз жана "сүрөт" баскычын басыңыз.
Бул чоң үлгүдөгү бөлүк үчүн мен ~ 140 гана упай алдым, андыктан акыркы продукт боюнча деталдар анча жакшы эмес.
Маалыматтарды. PCD файлына сактаңыз жана башын кошуңуз
#. PCD v.7 - Пойнт Булут Дайындарынын файл форматы VERSION.7 ТАЛААЛАР x y z SIZE 4 4 4 TYPE F F F COUNT 1 1 1 WIDTH (сиздин упайларыңыздын саны) БИЙИКТИКТИН 1 КӨРҮНҮШҮ 0 0 0 1 1 0 0 0 POINTS (сиздин упайыңыздын саны)
Башыңызга чекитти коюңуз, бул сизге сап номерлерин берген бардык редактордо оңой.
Чокуларды freeCadдан көрүүгө болот, алар freeCadдан. PLY файлы катары экспорттолот.
. PLY ачыңыз MeshLab жана объектинин үстүн. Бүттү !!
Сунушталууда:
Пойнт-чекит чыңалуусун көзөмөлдөгөн осциллятор: 29 кадам

Пойнт-чекит чыңалуусун көзөмөлдөгөн осциллятор: Саламатсызбы! Сиз проекти таптыңыз, анда биз чынында эле арзан микрочипти, CD4069 (жакшы) алып, анын кээ бир бөлүктөрүн жабыштырып, абдан пайдалуу чыңалуу көзөмөлдөөчү осцилляторун алабыз! Биз кура турган версияда араа же пандустун толкун формасы гана бар, ал
PA1 DIY Tube Preamp: натыйжалуу куткарылган компоненттер менен курулган: 13 кадам

PA1 DIY Tube Preamp: Куткарылган компоненттер менен эффективдүү түрдө курулган: Интернетте жана басып чыгарууда түтүк преамптарын куруу боюнча көптөгөн ресурстар бар, ошондуктан мен бир аз башка нерсени бөлүшөм деп ойлогом. Бул нускоочу менин дизайнымдын ачык булактан жасалган преампынын курулушун камтыйт жана бул бир гана эмес
Куткарылган LED дисплейи Microgame: 13 кадам

Куткарылган LED дисплей Microgame: Жакшы кабар! Мен жаңы эле LED дисплейи бар ыргытылган видеомагнитофонду таптым. Бул дисплейди сактап калуу жана андан долбоор жасоо убактысы келди дегенди билдирет. Стандарттык 7 сегменттүү дисплейлерде көп маалымат бар, бирок шаймандар жана электроника дисплейлери ыңгайлаштырылган
Arduino Nano колдонуу менен Ротари Encoder: 4 кадам

Ардуино Нанону колдонуп Ротари Encoder: Саламатсыздарбы, бул макалада мен Arduino Nano аркылуу ротациялык коддогучту кантип колдонуу керектигин үйрөтөм. Бул Ротари коддогучту колдонуу үчүн сизге тышкы китепкананын кереги жок. Ошентип, биз алгач китепканаларды кошпостон программаларды түзө алабыз. макул баштайлы
6 DOF робот колунун XYZ позициясына Arduino Uno колдонуу: 4 кадам

6 DOF робот колунун XYZ позициясына Arduino Uno колдонуу: Бул долбоор XYZдин тескери кинематикалык жайгашуусун камсыз кылуу үчүн кыска жана салыштырмалуу жеңил Arduino эскизин ишке ашыруу жөнүндө. Мен 6 servo робот колун кургам, бирок аны иштетүү үчүн программалык камсыздоону табууга келгенде, ал жерде короодон башка эч нерсе жок болчу