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

ATTiny85 конденсаторын тоолуур: 4 алхам
ATTiny85 конденсаторын тоолуур: 4 алхам

Видео: ATTiny85 конденсаторын тоолуур: 4 алхам

Видео: ATTiny85 конденсаторын тоолуур: 4 алхам
Видео: Простой телеграфный ключ на DIGISPARK(ATtiny85) 2024, Долдугаар сарын
Anonim
ATTiny85 конденсаторын тоолуур
ATTiny85 конденсаторын тоолуур
ATTiny85 конденсаторын тоолуур
ATTiny85 конденсаторын тоолуур

Энэхүү заавар нь ATTiny85 дээр суурилсан конденсаторын тоолуурт зориулагдсан бөгөөд дараахь онцлог шинж чанартай болно.

  • ATTiny85 (DigiStamp) дээр суурилсан
  • SSD1306 0.96 инчийн OLED дэлгэц
  • Бага утгатай конденсаторын давтамжийн хэмжилт 1pF - 1uF 555 осциллятор ашиглан
  • Өндөр утга бүхий конденсаторыг цэнэглэх хугацааг хэмжих 1uF - 50000uF
  • Тогтмол багтаамжийг багасгах аргуудад 2 тусдаа порт ашигладаг
  • Том конденсаторуудын хугацааг багасгахын тулд цэнэглэх хугацааг ашигладаг гүйдлийн хоёр утгыг ашигладаг
  • 555 аргын тэг тэгийг эхлүүлэх үед товчлуур дээр дарж өөрчлөх боломжтой
  • Хэмжилтийн мөчлөг бүрт ямар аргыг ашиглах ёстойг сонгоход ашигладаг хурдан тест.
  • Цэнэглэх цагийн аргын нарийвчлалыг OSCVAL цагийн давтамжийг тохируулах тусламжтайгаар сайжруулж болно

Алхам 1: Схем ба онол

Схем ба онол
Схем ба онол

Энэхүү схем нь ATTiny -ийг I2C интерфэйсээр SSD1306 OLED дэлгэцийг жолоодож байгааг харуулж байна. Энэ нь LiOn 300mAh батерейгаас шууд тэжээгддэг бөгөөд LiOn нийцтэй гадаад цэнэглэгчтэй ашиглах боломжтой цэнэглэх цэгийг багтаасан болно.

Эхний хэмжих арга нь 555 чөлөөт осцилляторын давтамжийг хэмжихэд суурилдаг. Энэ нь резистороор тодорхойлогддог үндсэн давтамж ба хэмжлийн нарийвчлалыг тодорхойлдог тул өндөр нарийвчлалтай байх ёстой конденсатортой. Би өөртөө байсан 820pF 1% полистирол конденсаторыг ашигласан боловч 1nF орчим бусад утгыг ашиглаж болно. Алдагдсан багтаамжийн (~ 20pF) тооцооллын хамт утгыг програм хангамжид оруулах ёстой. Энэ нь ойролцоогоор 16 кГц давтамжтай болсон. 555 гаралтыг тоног төхөөрөмжийн тоолуур болгон програмчилсан ATTiny -ийн PB2 -д өгдөг. Ойролцоогоор 1 секундын хугацаанд тооллогыг хэмжих замаар давтамжийг тодорхойлж болно. Суурь давтамжийг тодорхойлохын тулд үүнийг эхлэх үед хийдэг. Суурийн конденсатортай зэрэгцэн туршиж буй конденсаторыг нэмэхэд давтамж буурч, үүнийг хэмжиж, үндсэн давтамжтай харьцуулж үзвэл нэмэлт багтаамжийн утгыг тооцоолж болно.

Энэ аргын давуу тал нь тооцоолсон утга нь зөвхөн үндсэн конденсаторын нарийвчлалаас хамаарна. Хэмжилтийн хугацаа хамаагүй. Нарийвчлал нь давтамжийн хэмжилтийн нарийвчлалаас ихээхэн хамаардаг тул маш бага нэмэлт багтаамжийг хэмжих боломжтой байдаг. Хязгаарлах хүчин зүйл нь 555 осцилляторын "давтамжийн дуу чимээ" юм шиг санагддаг бөгөөд энэ нь миний хувьд ойролцоогоор 0.3pF -тэй тэнцүү юм.

Энэ аргыг зохих хэмжээнд ашиглах боломжтой. Хүрээг сайжруулахын тулд би импульсийн ирмэгийг илрүүлэхийн тулд хэмжих хугацааг синхрончилдог. Энэ нь 12 Гц (1uF конденсатортой) гэх мэт бага давтамжийн хэлбэлзлийг хүртэл нарийвчлалтай хэмждэг гэсэн үг юм.

Илүү том конденсаторуудын хувьд хэлхээг цэнэглэх хугацааг ашиглан зохион байгуулдаг. Энэ тохиолдолд туршиж буй конденсатор нь 0 -ээс эхэлж, тэжээлийн хүчдэлээс мэдэгдэж буй эсэргүүцлээр цэнэглэгдэхийн тулд цэнэглэгддэг. ATTiny85 дахь ADC нь конденсаторын хүчдэлийг хянахад ашиглагддаг бөгөөд цэнэгийн 0% -иас 50% хүртэлх хугацааг хэмждэг. Үүнийг багтаамжийг тооцоолоход ашиглаж болно. ADC -ийн лавлах нь мөн тэжээлийн хүчдэл тул энэ нь хэмжилтэнд нөлөөлөхгүй. Гэсэн хэдий ч авсан цаг хугацааны үнэмлэхүй хэмжигдэхүүн нь ATTiny85 цагийн давтамжаас хамаардаг бөгөөд үүний өөрчлөлт нь үр дүнд нөлөөлдөг. ATTiny85 дахь тааруулах бүртгэлийг ашиглан энэ цагийн нарийвчлалыг сайжруулах процедурыг ашиглаж болох бөгөөд үүнийг дараа тайлбарлах болно.

Конденсаторыг 0В-д цэнэглэхийн тулд n-сувагтай MOSFET-ийг цэнэглэх гүйдлийг хязгаарлахын тулд бага утгатай резистортой хамт ашигладаг. Энэ нь их хэмжээний конденсаторыг хүртэл хурдан цэнэггүй болгох боломжтой гэсэн үг юм.

Конденсаторыг цэнэглэхийн тулд цэнэглэх эсэргүүцлийн 2 утгыг ашигладаг. Үндсэн утга нь конденсаторыг 1f -ээс 50uF хүртэл цэнэглэх боломжийн хугацааг өгдөг. Өндөр утгатай конденсаторыг боломжийн интервалд хэмжих боломжийг олгохын тулд доод сувгийн эсэргүүцэлтэй зэрэгцээ суваг тавих MOSFET-ийг ашигладаг. Сонгосон утгууд нь 2200uF хүртэлх конденсаторыг хэмжих хугацааг ойролцоогоор 1 секунд, том утгын хувьд пропорциональ урт өгдөг. Утгын доод төгсгөлд 50% -ийн босго давах шилжилтийг хангалттай нарийвчлалтай тодорхойлохын тулд хэмжих хугацааг хангалттай урт байлгах ёстой. ADC -ийн түүвэрлэлтийн хурд 25uSec орчим байдаг тул хамгийн багадаа 22mSec нь боломжийн нарийвчлалыг өгдөг.

ATTiny нь хязгаарлагдмал IO (6 голтой) тул энэ нөөцийн хуваарилалтыг анхааралтай хийх хэрэгтэй. Дэлгэцийн хувьд 2 зүү, таймерын оролтод 1, ADC -д 1, цэнэгийн хяналтанд 1, цэнэгийн хурдыг хянахад 1 зүү шаардлагатай. Би товчлуурын хяналтыг хүссэн үедээ дахин тэглэхийг хүсч байсан. Энэ нь I2C SCL шугамыг сайн холбох замаар хийгддэг. I2C дохио нь ус зайлуулах суваг нээлттэй байгаа тул товчлуурыг доош татахыг зөвшөөрснөөр цахилгааны зөрчил байхгүй болно. Дэлгэц товчлуур дарагдсан үед ажиллахаа болино, гэхдээ товчлуурыг суллахад энэ нь үргэлжлэх болно.

Алхам 2: Барилга

Барилга
Барилга
Барилга
Барилга
Барилга
Барилга

Би үүнийг 55 мм х 55 мм хэмжээтэй 3D хэвлэсэн жижиг хайрцгаар хийсэн. 4 үндсэн бүрэлдэхүүн хэсгүүдийг хадгалахаар бүтээгдсэн; ATTiny85 DigiStamp самбар, SSD1306 дэлгэц, LiOn батерей, 55 таймер, цэнэгийн хяналтын электрон төхөөрөмж агуулсан бага хэмжээний прототип самбар.

Https://www.thingiverse.com/thing:4638901 хаягаар оруулна уу

Шаардлагатай эд ангиуд

  • ATTiny85 DigiStamp самбар. Би firmware байршуулахад ашигладаг microUSB холбогчтой хувилбарыг ашигласан.
  • SSD1306 I2C OLED дэлгэц
  • 300 мАч багтаамжтай LiOn батерей
  • Прототип хийх самбарын жижиг тууз
  • CMOS 555 таймер чип (TLC555)
  • n-суваг MOSFET AO3400
  • p-суваг MOSFET AO3401
  • 4R7, 470R, 22K, 2x33K эсэргүүцэл
  • Конденсатор 4u7, 220u
  • Нарийвчилсан конденсатор 820pF 1%
  • Бяцхан слайд шилжүүлэгч
  • Цэнэглэх порт ба хэмжих портуудад зориулсан 2 х 3 зүү толгой
  • Дарах товчлуур
  • Хашаа
  • Утас холбох

Шаардлагатай багаж хэрэгсэл

  • Нарийн цэг гагнуурын төмөр
  • Хясаа

Эхлээд прототипийн самбар дээрх 555 таймерын хэлхээ ба цэнэглэх бүрэлдэхүүн хэсгүүдийг бүрдүүл. Гадаад холболтод нисдэг утас нэмнэ үү. Слайдын унтраалга, цэнэглэх цэг, хэмжих портыг хашлагад хавсаргана уу. Батерейг холбож, тэжээлийн гол утсыг цэнэглэх цэг рүү шилжүүлээрэй. Товчлуурыг холбохын тулд газрыг холбоно уу. ATTiny85 -ийг байрлуулж, залгах ажлыг дуусгана уу.

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

www.instructables.com/Reducing-Sleep-Curre…

Тоолуурыг ашиглаагүй үед унтраах цахилгаан унтраалга байдаг тул энэ нь тийм ч чухал биш юм.

Алхам 3: Програм хангамж

Энэхүү конденсатор тоолуурын програм хангамжийг эндээс олж болно

github.com/roberttidey/CapacitorMeter

Энэ бол Arduino дээр суурилсан ноорог юм. Дэлгэц болон I2C -ийн номын сан хэрэгтэй

github.com/roberttidey/ssd1306BB

github.com/roberttidey/I2CTinyBB

Эдгээр нь хамгийн бага санах ой авахын тулд ATTiny -ийг оновчтой болгосон. I2C номын сан нь ямар ч 2 тээглүүр ашиглах боломжийг олгодог өндөр хурдтай bang арга юм. Цуваа портыг ашигладаг I2C арга нь 555 давтамжийг хэмжихэд шаардлагатай таймер/тоолуурын оролтыг ашиглахтай зөрчилддөг PB2 -ийг ашигладаг тул энэ нь чухал юм.

Програм хангамж нь муж улсын тойрог замаар хэмжилт хийдэг муж машины эргэн тойронд бүтээгдсэн байдаг. ISR нь 8 битийн тоног төхөөрөмжийг өргөтгөхийн тулд таймерын тоолуураас халихыг дэмждэг. Хоёр дахь ISR нь тасралтгүй горимд ажиллах ADC -ийг дэмждэг. Энэ нь цэнэглэх хэлхээг босгыг давахад хамгийн хурдан хариу өгөх болно.

Хэмжлийн мөчлөг бүрийн эхэнд getMeasureMode функц нь хэмжилт тус бүрт аль аргыг ашиглах нь илүү тохиромжтой болохыг тодорхойлдог.

555 аргыг ашигласан тохиолдолд тоолох хугацаа нь тоолуур өөрчлөгдсөн үед л эхэлдэг. Үүний нэгэн адил цаг хэмжигдэхүүнийг зөвхөн нэрлэсэн хэмжилтийн интервалын дараа болон ирмэг илэрсэн үед л зогсооно. Энэхүү синхрончлол нь бага давтамжийн хувьд ч гэсэн давтамжийг зөв тооцоолох боломжийг олгодог.

Програм хангамжийг эхлүүлэх үед конденсатор нэмээгүй 555 -ийн үндсэн давтамжийг тодорхойлохын тулд эхний 7 хэмжилтийг "шалгалт тохируулгын мөчлөг" болгон ашигладаг. Сүүлийн 4 мөчлөг дунджаар байна.

Цаг тааруулахын тулд OSCAL бүртгэлийг тохируулах дэмжлэг байдаг. Би ноорогны эхэнд OSCCAL_VAL -ийг 0 болгож тохируулахыг санал болгож байна. Энэ нь тааруулж дуустал үйлдвэрийн шалгалт тохируулгыг ашиглана гэсэн үг юм.

555 үндсэн конденсаторын утгыг тохируулах шаардлагатай. Би мөн тэнэмэл багтаамжийн тооцоолсон хэмжээг нэмнэ.

Хэрэв цэнэглэх аргуудад өөр өөр резистор ашигладаг бол програмын CHARGE_RCLOW болон CHARGE_RCHIGH утгыг өөрчлөх шаардлагатай болно.

Програм хангамжийг суулгахын тулд програмыг байршуулах, шаардлагатай үед USB порт холбох ердийн digistamp аргыг ашиглана уу. Энэ үйл ажиллагаанд USB -ээс тэжээл өгөх тул цахилгаан унтраалгыг унтраасан байдалд үлдээгээрэй.

Алхам 4: Үйл ажиллагаа ба дэвшилтэт шалгалт тохируулга

Үйл ажиллагаа нь маш энгийн.

Төхөөрөмжийг асааж, тохируулгын тэг дуусахыг хүлээсний дараа туршиж буй конденсаторыг хоёр хэмжих портын аль нэгэнд холбоно уу. Бага үнэ цэнэтэй <1uF конденсаторыг 555 портоор, өндөр утга бүхий конденсаторыг цэнэглэх портыг ашиглана уу. Электролитийн конденсаторын хувьд сөрөг терминалыг нийтлэг газардуулгын цэг рүү холбоно. Туршилтын явцад конденсаторыг ойролцоогоор 2 В хүртэл цэнэглэх болно.

555 портыг товчлуур дээр 1 секунд орчим дараад суллах замаар дахин ачаалах боломжтой. Үүний тулд 555 порт руу юу ч холбогдоогүй эсэхийг шалгаарай.

Нарийвчилсан шалгалт тохируулга

Цэнэглэх арга нь цагийг хэмжихийн тулд ATTiny85 -ийн үнэмлэхүй давтамжид тулгуурладаг. Цаг нь нэрлэсэн 8MHz цаг өгөх дотоод RC осцилляторыг ашигладаг. Осцилляторын тогтвортой байдал нь хүчдэл ба температурын өөрчлөлтөд маш сайн боловч давтамжийг үйлдвэрт тохируулагдсан байсан ч хэдхэн хувиар бууруулдаг. Энэхүү шалгалт тохируулга нь OSCCAL бүртгэлийг эхлүүлэх үед тохируулдаг. Давтамжийг шалгаж, тодорхой ATTiny85 хавтан дээр тохируулан OSCCAL утгыг илүү оновчтой тохируулснаар үйлдвэрийн шалгалт тохируулгыг сайжруулж болно.

Би програм хангамжид илүү автомат аргыг суулгаж амжаагүй байгаа тул дараах гарын авлагын процедурыг ашиглаж байна. Гадны ямар хэмжилт хийх боломжтой байгаагаас хамааран хоёр өөрчлөлт хийх боломжтой; 555 порт дээрх гурвалжин долгионы давтамжийг хэмжих чадвартай давтамжийн тоолуур эсвэл мэдэгдэж буй давтамжийн квадрат долгионы эх үүсвэр. 10KHz нь 0V/3.3V түвшинтэй бөгөөд 555 порт руу холбогдож долгионы хэлбэрийг дарж давтамжийг тоолуур руу оруулах боломжтой. Би хоёр дахь аргыг ашигласан.

  1. Тоолуурыг конденсатор холбогдоогүй хэвийн хүчээр асаагаарай.
  2. Давтамжийн тоолуур эсвэл дөрвөлжин долгионы генераторыг 555 порт руу холбоно уу.
  3. Товчлуур дээр дарж тохируулгын мөчлөгийг дахин эхлүүлнэ үү.
  4. Тохируулах мөчлөгийн төгсгөлд дэлгэц нь тоолуураар тодорхойлсон давтамж болон одоогийн OSCCAL утгыг харуулна. Тохируулгын мөчлөгийг дахин ашиглах нь хэмжсэн давтамжийг харуулах ба дэлгэцгүй байх хооронд шилжих болно гэдгийг анхаарна уу.
  5. Хэрэв үзүүлсэн давтамж нь мэдэгдэж байгаа хэмжээнээс бага байвал энэ нь цагны давтамж хэт өндөр бөгөөд эсрэгээрээ байна гэсэн үг юм. OSCCAL -ийн өсөлт нь цагийг 0.05% -иар тохируулдаг болохыг би олж мэдсэн.
  6. Цагийг сайжруулахын тулд шинэ OSCCAL утгыг тооцоол.
  7. Програм хангамжийн дээд хэсэгт OSCCAL_VAL руу шинэ OSCCAL утгыг оруулна уу.
  8. Шинэ програмыг дахин бүтээж, байршуулна уу. Шинэ OSCCAL утга болон шинэ давтамжийн хэмжилтийг харуулах ёстой 1-5 алхамуудыг давтана уу.
  9. Шаардлагатай бол хамгийн сайн үр дүнд хүрэх хүртэл алхамуудыг давтана.

Тэжээлийн хүчдэлээс шалтгаалан давтамжийн өөрчлөлтийг багасгахын тулд USB биш харин ердийн хүчээр ажиллаж байх үед энэ тохируулгын хэмжих хэсгийг хийх нь чухал юм.

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