Агуулгын хүснэгт:

Аврагдсан эргэлтэт кодлогч ашиглан XYZ цэг сканнер: 5 алхам
Аврагдсан эргэлтэт кодлогч ашиглан XYZ цэг сканнер: 5 алхам

Видео: Аврагдсан эргэлтэт кодлогч ашиглан XYZ цэг сканнер: 5 алхам

Видео: Аврагдсан эргэлтэт кодлогч ашиглан XYZ цэг сканнер: 5 алхам
Видео: Контроллер автоматического пуска-останова с часами реального времени DS3231 2024, Долдугаар сарын
Anonim
Аврагдсан ротари кодлогч ашиглан XYZ цэг сканнер
Аврагдсан ротари кодлогч ашиглан XYZ цэг сканнер

Ажлын байрнаасаа олон тооны хаягдсан эргэлдэгч оптик кодлогчдыг олж авсны эцэст би тэдэнтэй хамт хөгжилтэй/хэрэгтэй зүйл хийхээр шийдлээ.

Би саяхан гэртээ шинэ 3D принтер худалдаж авсан бөгөөд үүнийг 3D сканнераас илүү сайн юу гэж хэлэх вэ! Энэхүү төсөл нь 3D эд анги үйлдвэрлэхэд шаардлагатай эд ангиудыг үйлдвэрлэх төгс боломжийг надад олгосон юм.

Хангамж

Оптик кодлогч ба харгалзах оптик мэдрэгч

Ардуино НҮБ

прототип хийх нэмэлт бамбай

ган төмөр зам

3D принтер рүү нэвтрэх

Алхам 1: Оптик кодлогч

Оптик кодлогч
Оптик кодлогч
Оптик кодлогч
Оптик кодлогч
Оптик кодлогч
Оптик кодлогч

Энэ төсөлд мм -ийн хувьд харьцангуй өндөр тооны "товшилт" өгсөн бол бараг бүх эргэлтэт кодлогч ашиглаж болно. Мэдээжийн хэрэг өөр өөр кодлогчдод тохиромжтой холбох шийдэл шаардлагатай болно.

Би гэрэл мэдрэгчийн холболтын диаграммыг олохын тулд тасралтгүй хэмжигчийг ашигласан.

Алхам 2: 3D хэвлэсэн хэсэг

3D хэвлэсэн эд анги
3D хэвлэсэн эд анги
3D хэвлэсэн эд анги
3D хэвлэсэн эд анги

Эдгээр хэсгүүд нь эргэлтэт кодлогчдыг байрлуулж, төмөр замыг гулсуулж өгдөг. Нэг кодлогч орон сууц нь арын хэсэгт хөндлөн төмөр замыг холбох хоёр нүхтэй байдаг. Хос кодлогч орон сууц нь зүгээр л зөв өнцгөөр нийлсэн хоёр дан байшин юм.

Би fusion360 дээрх эдгээр бэхэлгээг кодлогч ба төмөр замын сонголтод тохируулан зохион бүтээсэн бөгөөд кодлогчийн босоо ам нь зэвэрдэггүй ган босоо амыг илүү сайн барихад туслахын тулд дүүжин резинэн бүрхүүлтэй богино хэсэгтэй.

Та босоо амыг чөлөөтэй гулсуулж, босоо байрлалд байрнаас унахыг хүсч байна, гэхдээ энэ нь гулсахгүй байхын тулд кодлогч дээр хангалттай дарамт үзүүлэх ёстой. Надад тохирсон зүйл бол босоо амны гулсагчийг кодлогч босоо амтай 0.5 мм -ээр давхцах боломжийг олгох явдал байв. Чаврын резин нь хангалттай зөөлөн бөгөөд энэ хэмжээгээр деформацид орж, сайн зүтгүүрийг өгдөг.

Алхам 3: Утасны диаграм

Утас диаграмм
Утас диаграмм

Хэлхээ нь маш энгийн. Опто мэдрэгч нь хэт улаан туяаны ялгаруулагч диод, гэрэл диодын газардуулга ба татах эсэргүүцлийг шаарддаг.

Би цуврал ялгаруулагч диодын хувьд 5мА байхаар шийдсэн бөгөөд энэ кодлогчод диод дээрх хүчдэлийн уналт 3.65V байна. Би Arduino -ийн 5V тэжээлийг ашигладаг бөгөөд энэ нь резисторын хувьд 1.35V -ийг үлдээдэг бөгөөд 5mA -д энэ нь 270 ом байна.

Фото диод нь зөвхөн бага гүйдлийг шингээдэг тул татах зориулалттай 10 к ом-ийг сонгосон бөгөөд товчлуурыг дарахад 10 к ом ашигласан болно. Прототипийн самбар дээр ашиглах боломжтой товчлуур байдаг бөгөөд үүнийг татах эсэргүүцэлээр хангаж, хүссэн оролтын зүү рүү залгаарай.

Алхам 4: Arduino код

Arduino код
Arduino код
Arduino код
Arduino код
Arduino код
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 юм. (нөгөө диаграм бол энэ биш юм).

Одоо кодыг ойлгох нь энгийн зүйл юм.

// PORT дээр зэрэгцүүлэн уншина уу // зэргэлдээх хосууд ижил кодлогч төлөвт хамаарах болохыг санаарай = PINB & 0x3f; // хэрэв ямар нэгэн diff = hold ^ state байвал ямар зүү өөрчлөгдсөн байна; // Үнэн хүснэгтийг авахын тулд XOR -ийн зэргэлдээх S1 ба S2 дохио // хамгийн хялбар арга бол одоогийн төлөвийн хуулбарыг хийж // баруун тийш нэг жаахан хайх = төлөв >> 1; // одоо битүүдийг XOR dir = lookup ^ state; // санаж байгаарай, хэрэв оролтын аль нэг нь // хэвээр байвал хүснэгтийг эргүүлэх шаардлагатай болно, үүнд бидэнд IF // мэдэгдэл хэрэггүй болно. Одоогоор хүссэн чиглэлийн бит нь 'dir' хувьсагчийн хос бүрийн баруун гар хэсэг юм // зүүн гар нь утгагүй // 'diff' хувьсагч нь 'set' -ийг өөрчилсөн биттэй байдаг. '01' эсвэл '10' // XOR нь 'dir' байтаар хийгдсэн бол утгыг нь // урвуулах болно. dir ^= ялгаа; // одоо hold хувьсагч hold = төлөвийг шинэчлэх; // хэрэв энэ кодлогчын хувьд аль нэг бит өөрчлөгдсөн бол (diff & 0x03) {// чиглэлийг тодорхойлно уу (dir & 0x01) {// өөрийн програм хангамж, утас дээр үндэслэн ++ эсвэл --z; } өөр {++ z; }} // бусад тохиолдолд мөн (if & 0x0c) {if (dir & 0x04) {++ y; } өөр { -y; }} if (diff & 0x30) {if (dir & 0x10) {--x; } өөр {++ x; }}

Товчлуурыг дарахад бид XYZ -ийн одоогийн утгыг терминал програм руу илгээдэг.

Цуваа өгөгдөл удаан боловч хэвийн ажиллаж байх үед энэ хугацаанд кодлогчдын байрлал өөрчлөгдөхгүй.

Өгөгдлийг түүхий тоо болгон илгээдэг. Та математик хийж, өгөгдлийг мм эсвэл инч гэх мэт хэлбэрээр илгээж болно, учир нь бид програм хангамжийн дараа объектын хэмжээг томруулж чаддаг тул түүхий утга нь маш сайн байдаг.

Алхам 5: Эхний скан хийх

Эхний скан хийх
Эхний скан хийх
Эхний скан хийх
Эхний скан хийх
Эхний скан хийх
Эхний скан хийх
Эхний скан хийх
Эхний скан хийх

Оноо цуглуулах нь удаан үйл явц тул би датчикийг зүүн дээд буланд байрлуулж, Arduino -г дахин тохируулна.

Энэ нь гэрийн гэсэн байрлалыг тэг болгоно.

Дараа нь датчикийг зорилтот байрлал руу шилжүүлж, тогтвортой байлгаад 'хормын хувилбар' товчийг дарна уу.

Энэхүү нэлээд том дээжийн хувьд би ердөө ~ 140 оноо авсан тул эцсийн бүтээгдэхүүний хувьд тийм ч нарийн мэдээлэл байдаггүй.

Өгөгдлийг. PCD файлд хадгалаад толгойг нь нэмнэ үү

#. PCD v.7 - Point Cloud Data файлын формат VERSION.7 ТАЛБАР x y z Хэмжээ 4 4 4 FF F COUNT 1 1 1 WIDTH (таны онооны тоо) ӨНДӨР 1 ХАРАХ ЦЭГ 0 0 0 1 0 0 0 ОНОО (таны онооны тоо)

Толгойн хэсэгт цэгийн тоог оруулаарай, энэ нь танд шугамын дугаар өгдөг аливаа редакторт хялбар байдаг.

Цэгүүдийг freeCad дээрээс харж болно, дараа нь freeCad -аас. PLY файл болгон экспортлодог.

MeshLab дээр. PLY -ийг нээж, объектыг гадаргуу дээр байрлуулна уу. Дууссан !!

Зөвлөмж болгож буй: