• دستگاه بودجه مبتنی بر آردوینو برای نابینایان (سخت افزار باز). محافظ آردوینو برای شارژ باتری های لیتیومی

    از آردوینو و مدار شارژ اضافه شده به آن می توان برای نظارت و کنترل شارژ باتری های NiMH استفاده کرد، مانند موارد زیر:

    دستگاه تمام شده

    باتری ها هستند راه عالیبرای برق رسانی به وسایل الکترونیکی قابل حمل شما آنها می توانند پول زیادی برای شما پس انداز کنند شارژ مناسب. برای اینکه بیشترین استفاده را از باتری های خود ببرید، باید به درستی شارژ شوند. این بدان معنی است که شما به یک کالای خوب نیاز دارید شارژر. می توانید برای خرید یک شارژر آماده پول زیادی خرج کنید یا خودتان از ساخت آن لذت ببرید. در این مقاله، نحوه ایجاد یک شارژر کنترل شده آردوینو را بررسی خواهیم کرد.

    اول، مهم است که توجه داشته باشید که وجود ندارد راه جهانیشارژ، که برای همه باتری ها مناسب است. انواع مختلف باتری ها از فرآیندهای شیمیایی مختلفی برای کارکرد آنها استفاده می کنند. در نتیجه، انواع متفاوتباتری ها باید متفاوت شارژ شوند. در این مقاله نمی‌توان به انواع باتری‌ها و روش‌های شارژ اشاره کرد. بنابراین، برای سادگی، ما روی رایج ترین نوع باتری سایز AA، باتری نیکل متال هیدرید (NiMH) تمرکز خواهیم کرد.

    تجهیزات جانبی

    لیست قطعات از چپ به راست:

    • مقاومت قدرتمند 10 اهم (حداقل 5 وات)؛
    • مقاومت 1 MΩ؛
    • خازن 1uF؛
    • ترانزیستور ماسفت IRF510;
    • سنسور دما TMP36;
    • منبع تغذیه 5 ولت؛

    نحوه شارژ باتری های NiMH AA

    افزایش نرخ شارژ، خطر آسیب دیدن باتری را افزایش می دهد.

    راه های زیادی برای شارژ کردن وجود دارد باتری های NiMH. اینکه از کدام روش استفاده می کنید عمدتاً به سرعت شارژ باتری خود بستگی دارد. میزان شارژ با توجه به ظرفیت باتری اندازه گیری می شود. اگر باتری شما 2500 میلی آمپر ساعت ظرفیت دارد و آن را با 2500 میلی آمپر شارژ می کنید، آن را با سرعت 1C شارژ می کنید. اگر همان باتری را با 250 میلی آمپر شارژ کنید، آن را با C/10 شارژ می کنید.

    هنگام شارژ سریع باتری (بالای C/10)، باید ولتاژ و دمای باتری را به دقت کنترل کنید تا بیش از حد شارژ نشود. این می تواند آسیب جدی به باتری وارد کند. با این حال، هنگامی که باتری را به آرامی شارژ می کنید (با نرخ کمتر از C/10)، در صورت شارژ بیش از حد، احتمال آسیب رساندن به باتری بسیار کمتر است. بنابراین، روش های شارژ آهسته به طور کلی ایمن تر در نظر گرفته می شوند و به شما در افزایش عمر باتری کمک می کنند. بنابراین در شارژر خانگی خود از نرخ شارژ C/10 استفاده خواهیم کرد.

    مدار شارژ

    برای این شارژر اساس مداری برای کنترل منبع تغذیه با آردوینو. مدار توسط یک منبع 5 ولتی مانند آداپتور AC یا منبع تغذیه کامپیوتر تغذیه می شود. اکثر پورت های USB به دلیل محدودیت های فعلی برای این پروژه مناسب نیستند. منبع 5 ولت باتری را از طریق یک مقاومت قدرتمند 10 اهم و یک ترانزیستور قدرتمند MOSFET شارژ می کند. ترانزیستور ماسفت میزان جریان عبوری از باتری را کنترل می کند. مقاومت به عنوان یک راه آسان برای کنترل جریان اضافه شده است. کنترل جریان با اتصال هر انتهای مقاومت به پایه های ورودی آنالوگ آردوینو و اندازه گیری ولتاژ در هر طرف انجام می شود. ترانزیستور ماسفت توسط پین خروجی PWM آردوینو هدایت می شود. پالس های سیگنال مدولاسیون عرض پالس توسط یک فیلتر روی یک مقاومت 1 MΩ و یک خازن 1 μF تا یک ولتاژ ثابت صاف می شوند. این مدار به آردوینو اجازه می دهد تا جریان عبوری از باتری را نظارت و کنترل کند.


    حسگر دما

    سنسور دما برای جلوگیری از شارژ بیش از حد باتری و اطمینان از ایمنی کار می کند.

    به عنوان یک اقدام احتیاطی اضافی، یک سنسور دمای TMP36 برای نظارت بر دمای باتری به شارژر اضافه شده است. این سنسور ولتاژی تولید می کند که به طور خطی به دما وابسته است. بنابراین، بر خلاف ترمیستورها، نیازی به کالیبراسیون یا تعادل ندارد. سنسور در یک سوراخ حفر شده در محفظه نگهدارنده باتری نصب شده و به سوراخ چسبانده شده است تا هنگام نصب در نگهدارنده روی باتری فشار داده شود. پایه های سنسور به ریل 5 ولت، به کیس و به پایه ورودی آنالوگ آردوینو متصل می شوند.

    نگهدارنده باتری AA قبل و بعد از نصب روی تخته نان

    کد


    کد این پروژه بسیار ساده است. متغیرهای ابتدای کد منبع به شما امکان می‌دهند با وارد کردن ظرفیت باتری و مقاومت دقیق مقاومت برق، شارژر را شخصی‌سازی کنید. متغیرهای آستانه ایمن نیز اضافه شده است. حداکثر ولتاژ مجاز باتری روی 1.6 ولت تنظیم شده است. حداکثر دمای باتری روی 35 درجه سانتیگراد تنظیم شده است. حداکثر زمان شارژ روی 13 ساعت تنظیم شده است. اگر هر یک از این آستانه های ایمنی فراتر رود، شارژر خاموش می شود.

    در بدنه برنامه مشاهده می کنید که سیستم به طور مداوم ولتاژهای خروجی یک مقاومت قدرتمند را اندازه گیری می کند. این برای محاسبه مقادیر ولتاژ روی باتری و جریان عبوری از آن استفاده می شود. جریان با مقدار هدف مقایسه می شود که C/10 است. اگر جریان محاسبه شده با مقدار هدف بیش از 10 میلی آمپر متفاوت باشد، سیستم به طور خودکار مقدار خروجی را برای اصلاح آن تنظیم می کند.

    آردوینو از رابط سریال برای نمایش تمام داده های فعلی استفاده می کند. اگر می خواهید شارژر خود را کنترل کنید، می توانید آردوینو خود را به آن وصل کنید پورت USBکامپیوتر، اما این ضروری نیست، زیرا آردوینو توسط یک منبع تغذیه 5 ولت از شارژر تغذیه می شود.

    ظرفیت باتری داخلی = 2500; // مقدار ظرفیت باتری در مقاومت شناور میلی آمپر ساعت = 10.0; // مقاومت مقاومت قدرت اندازه گیری شده در قطع ولتاژ = 1600; // حداکثر ولتاژ باتری (بر حسب میلی ولت) که نباید از آن بیشتر شود. // حداکثر دمای باتری که نباید از آن بیشتر شود (در درجه سانتیگراد) //float cutoffTemperatureF = 95; // حداکثر دمای باتری که نباید از آن بیشتر شود (در درجه فارنهایت) زمان قطع طولانی = 46800000; // حداکثر زمانشارژ در 13 ساعت، که نباید از خروجی داخلی بیشتر شودPin = 9; // سیم خروجی متصل به پین ​​دیجیتال 9 int outputValue = 150; // مقدار خروجی PWM int analogPinOne = 0; // اولین پروب ولتاژ متصل به پایه آنالوگ 0 float valueProbeOne = 0; // متغیر برای ذخیره مقدار در analogPinOne float voltageProbeOne = 0; // ولتاژ محاسبه شده در analogPinOne int analogPinTwo = 1; // پروب ولتاژ دوم متصل به پایه آنالوگ 1 float valueProbeTwo = 0; // متغیر برای ذخیره مقدار در analogPinTwo float voltageProbeTwo = 0; // ولتاژ محاسبه شده در analogPinTwo int analogPinThree = 2; // پروب ولتاژ سوم متصل به پین ​​آنالوگ 2 float valueProbeThree = 0; // متغیر برای ذخیره مقدار در analogPinThree float tmp36Voltage = 0; // ولتاژ محاسبه شده روی آنالوگPinThree float temperatureC = 0; // دمای سنسور محاسبه شده بر حسب درجه سانتیگراد // دمای شناورF = 0; // دمای سنسور محاسبه شده بر حسب درجه فارنهایت ولتاژ شناور اختلاف = 0; // تفاوت بین ولتاژهای analogPinOne و analogPinTwo float battery Voltage = 0; // ولتاژ محاسبه شده باتری جریان شناور = 0; // جریان محاسبه شده از طریق بار در (mA) float targetCurrent = ظرفیت باتری / 10; // جریان خروجی هدف (بر حسب میلی آمپر) روی // C/10 یا 1/10 ظرفیت باتری جریان شناور تنظیم شده استError = 0; // تفاوت بین هدف و جریان واقعی (بر حسب میلی آمپر) void setup() (Serial.begin(9600); // setup رابط سریال pinMode (outputPin، OUTPUT)؛ // تنظیم پین به عنوان خروجی ) void loop() (analogWrite(outputPin, outputValue)؛ // نوشتن مقدار خروجی در پین خروجی Serial.print("Output:")؛ // نمایش مقادیر خروجی برای کنترل کامپیوتر Serial.println (outputValue)؛ valueProbeOne = analogRead(analogPinOne)؛ // خواندن مقدار ورودی در اولین پروب voltageProbeOne = (valueProbeOne*5000)/1023؛ // محاسبه ولتاژ در اولین پروب بر حسب میلی ولت Serial.print("Voltage Probe One (mV): ")؛ // نشان دادن ولتاژ روی پروب اول Serial.println(voltageProbeOne); valueProbeTwo = analogRead(analogPinTwo)؛ // مقدار ورودی را در پروب دوم بخوانید voltageProbeTwo = (valueProbeTwo*5000)/1023; // ولتاژ پروب دوم را بر حسب میلی ولت محاسبه کنید Serial.print("Voltage Probe Two (mV): "); // ولتاژ پروب دوم را نشان می دهد Serial.println(voltageProbeTwo); batteryVoltage = 5000 - voltageProbeTwo; // محاسبه ولتاژ باتری Serial.print("ولتاژ باتری (mV): ")؛ // نمایش ولتاژ باتری Serial.println(batteryVoltage); جریان = (voltageProbeTwo - voltageProbeOne) / مقاومت؛ // محاسبه جریان شارژ Serial.print("Target Current (mA):"); // نشان دادن هدف فعلی Serial.println(targetCurrent); Serial.print("جریان باتری (mA):"); // نمایش واقعی فعلی Serial.println(current); currentError = targetCurrent - فعلی; // تفاوت بین جریان های هدف و اندازه گیری شده Serial.print("Current Error (mA):"); // نمایش خطای تنظیمات فعلی Serial.println(currentError); valueProbeThree = analogRead(analogPinThree); // مقدار ورودی سومین پروب را بخوانید، tmp36Voltage = valueProbeThree * 5.0; // تبدیل آن به ولتاژ tmp36Voltage /= 1024.0; درجه حرارتC = (tmp36ولتاژ - 0.5) * 100 ; // تبدیل بر اساس 10 میلی ولت در هر درجه با افست 500 میلی ولت // ((ولتاژ - 500 میلی ولت) ضربدر 100) سریال. print("دما (درجه سانتیگراد)"); // نمایش دما بر حسب درجه سانتیگراد Serial.println(temperatureC); /* temperatureF = (دما C * 9.0 / 5.0) + 32.0; //تبدیل به فارنهایت Serial.print("دما (درجه فارنهایت)"); Serial.println(temperatureF); */ Serial.println(); // خطوط خالی اضافی برای آسان تر خواندن داده ها هنگام اشکال زدایی Serial.println(); if(abs(currentError) > 10) // اگر خطای تنظیم جریان به اندازه کافی بزرگ است، سپس ولتاژ خروجی را تنظیم کنید (outputValue = outputValue + currentError / 10; if(outputValue< 1) // выходное значение никогда не может быть ниже 0 { outputValue = 0; } if(outputValue >254) // مقدار خروجی هرگز نمی تواند بیشتر از 255 باشد (outputValue = 255; ) analogWrite(outputPin, outputValue); // مقدار خروجی جدید بنویسید) if(temperatureC > cutoffTemperatureC) // توقف شارژ اگر دمای باتری از آستانه ایمن فراتر رفت (outputValue = 0; Serial.print ("Max Temperature Exceeded"); ) /* if(temperatureF > cutoffTemperatureF) / / اگر دمای باتری از آستانه ایمن فراتر رفت، شارژ را متوقف کنید (مقدار خروجی = 0؛ ) */ if(ولتاژ باتری > ولتاژ قطع) // اگر ولتاژ باتری از آستانه ایمن فراتر رفت، شارژ را متوقف کنید (مقدار خروجی = 0؛ چاپ سریال ("حداکثر ولتاژ بیش از حد")؛ ) اگر (millis() > cutoffTime) // توقف شارژ اگر زمان شارژ از آستانه فراتر رفت (outputValue = 0; Serial.print("Max Charge Time Exceeded"); ) delay(10000); // تاخیر 10 ثانیه قبل از تکرار بعدی حلقه )

    نسخه قابل دانلود کد منبع را می توانید در لینک زیر پیدا کنید.

    چند سال پیش، من وظیفه توسعه مجموعه ای از دستگاه های ارزان قیمت را بر عهده گرفتم که به افراد نابینا اجازه می دهد تا بهتر با دنیای اطراف ما سازگار شوند. تا به امروز به همراه تیمی از افراد همفکر موفق به اجرای چندین پروژه شده ام.

    در این مقاله می خواهم در مورد اتصال عصای اولتراسونیک و جا کلیدی اولتراسونیک صحبت کنم - دستگاه های تمام عیار، که از ماژول های ارزان قیمت موجود مونتاژ می شوند.

    اتصال عصا اولتراسونیک و جاکلیدی اولتراسونیک دستگاه هایی برای افراد نابینا هستند که در مورد موانعی که بالاتر از سطحی هستند که با عصای معمولی قابل تشخیص هستند هشدار می دهند. چنین موانعی می توانند اتومبیل هایی با موقعیت صندلی بالا، موانع، نرده های بلند باشند. نازل اولتراسونیک به یک عصا معمولی وصل می شود و جاکلیدی اولتراسونیک به گردن آویزان می شود یا مانند چراغ قوه در دست حمل می شود.

    عملکرد دستگاه ها بر اساس انعکاس امواج اولتراسونیک از موانع است. با اندازه گیری اختلاف زمانی بین لحظه تولید پالس و لحظه دریافت پژواک منعکس شده، می توان فاصله تا مانع را تعیین کرد.

    برای توسعه دستگاه‌ها باید سنسور اندازه‌گیری فاصله، برد کنترل و دستگاه سیگنال‌دهنده، باتری‌ها، روش شارژ آن‌ها و موارد مناسب انتخاب شود.

    سنسور اولتراسونیک

    برای اندازه گیری فاصله تا یک مانع، دو دستگاه مورد آزمایش قرار گرفتند:
    • ماژول التراسونیک سازگار با آردوینو HC-SR04
    • سنسور پارک خودرو HO 3800
    هر دو دستگاه به روشی مشابه کار می کنند. تفاوت ها در الگوی تابش سنسورها، حداکثر برد برای تشخیص موانع و طراحی است.
    مقایسه پارامترهای سنسور:

    در طی آزمایشات مشخص شد که ماژول های HC-SR04 توانایی کمی بدتر در تشخیص موانع و کار در شرایط سخت آب و هوایی (سرما) دارند.

    هر دو سنسور، علیرغم تفاوت هایشان، می توانند در اتصال عصای اولتراسونیک به عنوان وسیله ای برای اندازه گیری فاصله تا یک مانع استفاده شوند، بنابراین پارامتر اصلی برای ما هنگام انتخاب سنسور قیمت بود. ما روی سنسور ارزانتر HC-SR04 قرار گرفتیم.

    برد کنترل

    پلتفرم آردوینو به عنوان برد کنترل انتخاب شد. در مورد ما، تخته های نسخه های مینیاتوری بیشترین کاربرد را دارند: Arduino Mini، Arduino Nano یا آردوینو پرومینی به طور کلی می توان از هر کنترلر دیگری که قابلیت های مشابهی را ارائه می دهد استفاده کرد.

    باتری ها

    برای تامین برق دستگاه، توصیه می شود از سلول های باتری لیتیوم یون (Li-ion) یا هیدرید فلز نیکل (Ni-Mh) استفاده کنید.

    هنگام کار در شرایط آب و هوایی معمولی، استفاده از باتری های Li-ion منطقی است که در مقایسه با Ni-Mh دارای مزایای زیر هستند:

    • سهولت اجرای طرح شارژ
    • در دسترس بودن ماژول های شارژ آماده
    • ولتاژ خروجی بالاتر
    • تعداد زیاد و متنوع ابعاد کلیو ظروف
    در دماهای پایین بهتر است از باتری های Ni-Mh استفاده شود.

    ولتاژ خروجی یک باتری Ni-Mh (1.0 -1.4 V) برای کارکرد دستگاه کافی نیست. برای به دست آوردن ولتاژ 5 ولت (الزامی برای کارکرد آردوینو و پارکینگ)، علاوه بر باتری ها، از مبدل تقویت کننده DC-DC استفاده می کنیم.

    برای کارکرد مبدل های DC-DC که انتخاب کرده ایم، باید ولتاژ ورودی 0.9-6.0 V ارائه شود. برای به دست آوردن ولتاژ خروجی مورد نیاز، می توان از یک عنصر Ni-Mh با ولتاژ 1.2 ولت استفاده کرد. با این حال، با کاهش ولتاژ ورودی، ظرفیت بار مبدل نیز کاهش می یابد، بنابراین، برای عملکرد پایدارمطلوب است که حداقل 2 ولت به ورودی مبدل (دو عنصر Ni-Mh هر کدام 1.2 ولت یا یک عنصر Li-ion با ولتاژ 3.7 ولت) تامین شود. توجه داشته باشید که مبدل های DC-DC وجود دارند که ولتاژ ورودی 1.2 ولت برای آنها کافی نیست.

    شارژ باتری ها

    برای باتری های لیتیوم یونیبسیاری از ماژول های ارزان قیمت آماده با نشان پایان شارژ وجود دارد.

    در مورد باتری های Ni-Mh، همه چیز پیچیده تر است. ما در حال حاضر راه حل های تعبیه شده آماده ای در بازار پیدا نکرده ایم. برای شارژ باتری های Ni-Mh، می توانید از شارژرهای خارجی تخصصی استفاده کنید یا مدار شارژ خود را ایجاد کنید.

    یکی از راه های شارژ یک سلول Ni-Mh این است اتصال سریالبا یک باتری از دو تثبیت کننده خطی LM317 (یا مشابه): اولی در حالت محدود کننده جریان است، دومی در حالت محدود کننده ولتاژ است.

    ولتاژ ورودی چنین مداری 7.0-7.5 ولت است. در صورت عدم خنک سازی تثبیت کننده ها، توصیه نمی شود از این ولتاژ تجاوز کنید. ولتاژ هر باتری Ni-Mh در طول شارژ باید حدود 1.45 ولت (ولتاژ یک سلول Ni-Mh کاملا شارژ شده) باشد. برای جلوگیری از داغ شدن بیش از حد و خرابی ریز مدارها، جریان شارژ باتری نباید از 100 میلی آمپر تجاوز کند و در صورت استفاده از هیت سینک های مناسب تا 200 میلی آمپر قابل افزایش است.

    مزیت این طرح شارژ این است که نیازی به نظارت بر وضعیت شارژ نیست: هنگامی که ولتاژ مورد نظر در سلول به دست می آید، جریان به طور خودکار به حداقل ایمن کاهش می یابد.

    دستگاه سیگنالینگ

    بسته به انتخاب کانال هشدار (شنوایی یا لمسی)، یک دستگاه فعال کننده انتخاب می شود - یک زنگ یا یک موتور لرزش. علاوه بر این، می توانید هر دو روش اعلان را با هم ترکیب کنید و به کاربر اجازه دهید بین آنها جابجا شود.

    هنگام آزمایش نمونه های اولیه، متوجه شدیم که انتقال اطلاعات در مورد نزدیکی یک مانع از طریق ارتعاش راحت تر است، زیرا. در این حالت کانال صوتی که برای یک نابینا بسیار مهم است درگیر نمی شود. بنابراین، تمام محصولات طراحی و مونتاژ شده توسط ما از لرزش برای هشدار در مورد مانع استفاده می کنند. شدت ارتعاش متناسب با فاصله تا مانع است.

    قاب

    ما نتوانستیم یک مورد مناسب برای اتصال عصای اولتراسونیک در میان کیس های تولید انبوه پیدا کنیم. برای آزمایش دستگاه، از یک کیس پلاستیکی ABS با چاپ سه بعدی استفاده کردیم. برای چاپ کیس روی یک چاپگر سه بعدی، مدل سه بعدی زیر را توسعه دادیم:

    نتیجه آزمایش نمونه های اولیه

    در طول فرآیند توسعه، بیش از 12 نوع از محصول مونتاژ شد. هر محصول جدید کاستی های قبلی را برطرف می کرد: در طول فرآیند توسعه، ابعاد و وزن محصول را کاهش دادیم، سنسور اولتراسونیک را انتخاب کردیم که هم از نظر قیمت و هم از نظر ویژگی های فنی ما را راضی می کرد، استفاده از کانال صوتی را کنار گذاشتیم و بهینه سازی الگوریتم عملکرد دستگاه به همراه نابینایان (Bortnikov P.V.، Shalintsev V.A.)، تمام محصولات مونتاژ شده آزمایش شدند. در نتیجه نمونه نهایی را دریافت کردیم.

    موارد زیر اصل هستند مداردستگاه توسعه یافته:

    هنگامی که از هم جدا می شود، دسته کلید اولتراسونیک دور گردن به شکل زیر است:

    تمام اجزای مورد استفاده در مونتاژ، به جز محفظه اتصال عصایی چاپ شده سه بعدی، از طریق AliExpress خریداری شدند:

    1. سنسور اولتراسونیک HC-SR04.
    2. برد کنترل Adruino Pro Mini.
    3. باتری قابل شارژ 3.7 ولت 300 میلی آمپر ساعت.
    4. مبدل ولتاژ 0.9 ولت ~ 5 ولت به 5 ولت 600 میلی آمپر.
    5. ماژول شارژ AC/DC 220 ولت تا 5 ولت 1 آمپر.
    6. شارژر LA-520W.
    7. دستگاه سیگنالینگ: موتور ارتعاشی برای تلفن همراه 4x10mm DC 3V.
    8. دکمه PB-22E60.
    9. کیس Gainta G1906 (برای جا کلیدی).
    10. ترانزیستور: bss138/bcr108 یا optocoupler CPC1230N.
    ظاهر و قیمت (از جمله تحویل از چین) اجزای مورد استفاده برای مونتاژ ضمیمه عصا اولتراسونیک در شکل نشان داده شده است:

    از اجزای مورد استفاده در مونتاژ، بیشترین سهم را در هزینه دستگاه توسط کیس چاپ شده روی چاپگر سه بعدی انجام می دهد.

    ظاهر و قیمت (از جمله تحویل از چین) قطعات مورد استفاده برای مونتاژ جا کلیدی اولتراسونیک در شکل نشان داده شده است:

    در آینده می توانید یک پایه برای بدنه Gainta G1906 بسازید و از دستگاهی با چنین بدنه ای به عنوان ضمیمه نی استفاده کنید.

    یکی از راه های کاهش قیمت دستگاه ها، صرفه جویی در هزینه های نیروی کار و هزینه حمل و نقل قطعات دستگاه به روسیه با گسترش تولید مستقیم در چین است.

    دستگاه های توسعه یافته توسط ما دارای ویژگی های زیر هستند:

    پس از انجام آزمایش‌های اولیه دستگاه‌ها، برای جلوگیری از ایجاد محرک‌های غیرضروری در هنگام استفاده از دستگاه‌ها در جریان جمعیت، مجبور شدیم محدوده تشخیص موانع را به ۱.۵ متر محدود کنیم. با تغییر مداوم سطح ارتعاش، تعیین نزدیکی یک مانع دشوارتر است، بنابراین، با توجه به نتایج آزمایشات اولیه، ما در سه سطح ارتعاش مستقر شدیم.
    ظاهر اتصال عصا اولتراسونیک:

    شکل ظاهری جاکلیدی دور گردن:

    مدل سه بعدی ضمیمه عصای اولتراسونیک و منبع Firmware برای Adruino برای دانلود در دسترس است

    "یکسو کننده" خوب قدیمی
    شارژر B14"!
    تو همیشه مثل یک نجات دهنده بودی:
    نجاتمون داد عزیزم

    با گرما و سرمای زمستان
    باتری را احیا کرد.
    حتی اگر سرما خورده باشم
    شما مانند یک ربات ترمیناتور هستید!

    نشکست، تسلیم نشد
    حتی در سخت ترین ساعت؛
    در صورت لزوم - صاف شده،
    همه چیز را برای ما شارژ می کند.

    چهل سال گذشت
    از دوران خوب برژنف،
    وقتی بدنت مثل یک بدن است
    در کارخانه وصل شد.

    و از آن به بعد خدمت کرده اید
    شما به نفع همه ماشین ها هستید،
    متفاوت از اتحادیه
    این حقیقت که حقیقت نابود نشدنی است.

    اما زمان تغییر فرا رسیده است
    بار سنگین زمان را دور بریزید،
    تا بتوانید بالا بروید
    به طوری که هاوکینگ باهوش شد.

    اگر کسی فالستو بپرسد
    "چگونه میتونم اینو انجام بدم؟" -
    نگران نباش، من در مورد آن صحبت می کنم
    در این مقاله خواهم گفت.

    یک لحظه اعتیاد

    با سلام، خوانندگان عزیز! پس از یک وقفه تقریباً چهار ماهه، دوباره وارد کار شدم و به عنوان گزارشی از کارهای انجام شده، نوشتن این مقاله را ضروری می دانم. مدتها فکر می کردم از کجا شروع کنم، خوب، برای بار چهارم در مورد دید صفر و غیره پست نده. - این نقل قول برای من برای سه مقاله اخیر خیلی منظم کار می کرد، پس کافی است - بگذارید او به یک استراحت شایسته برود! خوب، در ضمن، من از یک ترفند آزمایشی جدید استفاده خواهم کرد، بیایید آن را "دقیقه اعتیاد به مواد مخدر" بنامیم - یک دقیقه سرگرم کننده و آرام "با سلام" که به آرامی به ایده اصلی مقاله منجر می شود. 🙄

    بنابراین، همانطور که قبلاً در "دقیقه" ذکر شد، امروز به شما خواهم گفت که چگونه یک شارژر قدیمی از اوایل دهه هفتاد را به یک شارژر جدید و مدرن تبدیل کردم که توسط یک میکروکنترلر کنترل می شود. این فکر به ذهنم خطور کرد که دوستم در لحظه ای که باتریم در حال شارژ شدن بود، مرا برای نوشیدن آبجو به خانه اش دعوت کرد. من خوشحال می شدم که بروم، اما این بدشانسی است - شارژر باید دائماً نظارت می شد! برای بررسی ولتاژ باتری هر نیم ساعت یک بار یا حتی بیشتر به آن بروید و اگر از حداکثر مقدار بیشتر شد، با کلید مربوطه در پنل جلویی برق را کاهش دهید. موافقم، ناخوشایند است: شما دائماً به یک باتری در حال شارژ زنجیر شده اید و نمی توانید جایی بروید، و اگر ناگهان لحظه مناسب را از دست بدهید، باتری از شما تشکر نخواهد کرد. از طرف دیگر، او به هر حال آن را نمی گوید: او نمی داند چگونه یک بنای یادبود صحبت کند))))

    جوک ها شوخی هستند، اما من مدت هاست که می خواستم در آردوینو کاری جدی انجام دهم، که در ماه نوامبر با آن ملاقات کردم، و بسته ارزشمندی را از چینی ها از Aliexpress با میکروکنترلر، سپر و سایر موارد از طریق پست دریافت کردم. و در اینجا، یک فرصت عالی است - از آن استفاده کنید، اما آن را انجام دهید! بنابراین من آن را گرفتم و مستقیماً شروع به انجام آن کردم!

    مدار شارژر

    در ابتدا، من یک نمودار بسیار قابل کلیک از دستگاه تمام شده را به شما ارائه می دهم:

    لیست اجزای اصلی

    • 8 خازن: 2 x 22 pF، 1 x 100 pF، چند قطعه 100 mF، و برای برق - به ترتیب یک 6.3 ولت و دو 16 بزرگ، و 1500 mF (همه چیز می تواند 16 ولت یا بیشتر باشد، مهم نیست).
    • میکروکنترلر قابل برنامه ریزی Atmega328 با کوارتز 16 مگاهرتز و ترجیحاً یک محافظ برای آن (با ورق زدن چند صفحه به سپر اول، این بیشترین خواهد بود. گزینه ارزان) برای سهولت در دوخت.
    • به همین دلیل - سوکت های گیره برای ریز مدار بالا. اگرچه ممکن است، اما به عنوان یک گزینه اقتصادی، می توانید با موارد معمول کنار بیایید. خوب، یا سیم ها را به MK لحیم کنید و آنها را با یک آردوینو یا فلاشر دیگر فلش کنید - همانطور که می خواهید.
    • 9 ترانزیستور KT315 و 1 KT815 (یا آنالوگ) - لحیم کاری از هر فناوری قدیمی شوروی.
    • 8 LED پخش کننده سفید و 1 سبز.
    • 9 رله با سیم پیچ برای 12 ولت: یکی برای 220 ولت، چهار رله برای 12 V 16 A و چهار رله کوچکتر برای 12 V 12 A. 8 مورد آخر تا حد امکان کوچک مورد نیاز است.
    • 40 مقاومت: 15 x 560 اهم، 12 کیلو اهم، 8 x، 2 x 10k و هر کدام یک 3k3، 4k7 و 30k.
    • چند دیود برای 12 ولت: یکی برای نیم آمپر، حداقل دوم برای یک آمپر، حاشیه آسیبی نمی بیند. از هر جایی لحیم می شود، به عنوان مثال از یک PSU مرده.
    • نوعی لامپ، می توانید با یک مقاومت LED، از 220 ولت می سوزد. به طور کلی، نئونکا در آنجا جالب به نظر می رسد!
    • یک صفحه نمایش شانزده بخش از یک واحد سیستم قدیمی برای نمایش ولتاژ فعلی روی آن. خوب، یا سه هفت بخش. یا حتی یک پیچ برای نمایش ولتاژ فعلی چکش کنید: از این گذشته، این یک دستگاه خودکار است، ولتاژ را خود کنترل می کند، نیازی به دانستن آن نیست، در موارد شدید می توانید آن را با یک تستر اندازه گیری کنید. به جای صفحه نمایش، فقط می توانید چند ال ای دی بگذارید تا آردوینا با آنها چشمک بزند، می گویند من یخ نمی زنم، کار می کنم، همه چیز تحت کنترل است! (نه، من هرگز آردوینو یخ زده ندیده ام، اما با این وجود شما باید برای هر چیزی آماده باشید.) 🙄
    • 3 شیفت رجیستر 74HC595
    • خوب، چیزی شبیه به نصف چنین برد مدار (من 10 قطعه از ebay برای یک لیوان کمپوت خریدم):

    می خواهم توجه داشته باشم که تقریباً تمام قطعات مورد استفاده در این پروژه رتبه بندی دقیقی ندارند و می توان آنها را با موارد مشابه یا مشابه جایگزین کرد، یا با حداقل تطبیق مدار و فریمور یا بدون هیچ تغییری. من سعی کردم از جزئیاتی استفاده کنم که به معنای واقعی کلمه در نوک انگشتانم قرار داشتند: به عنوان مثال، اکثریت قریب به اتفاق مقاومت ها و ترانزیستورهای مورد استفاده در اینجا اخیراً از یک ضبط صوت ضد غبار Vilma خارج شدم، بقایای آن، پس از لحیم کاری، با خیال راحت به یک محل دفن زباله بنابراین مبلغی که برای خرید قطعات این دستگاه صرف می شود از 15 دلار فراتر نمی رود و حتی در آن زمان نیز بیشتر بودجه صرف رله می شد.

    نسخه شارژر اصلی

    متأسفانه من عکسی از این شارژر در حالت اولیه نداشتم، بنابراین تنها چیزی که در این مرحله می توانم به شما ارائه دهم، عکسی است که در آن پوشش از قبل برداشته شده است، قسمت مکانیکی کلید برق (سمت چپ) و دستگیره این سوئیچ است. (راست) باز شده. قسمت الکتریکی آن از بالای دستگاه بیرون می آید. همچنین، یک کلید سوئیچ ولتاژ (6 یا 12 ولت) از سوراخ اصلی خود خارج شد:

    پس از انجام دستکاری های فوق، سیم برق را از فیوز و سیم پیچ اولیه ترانسفورماتور نیز لحیم کردم، اگرچه هنوز در سمت راست قرار دارد. گوشه بالاییفریم بعدی اما شما خیلی به آن عادت نمی کنید - من یک جایگزین عالی برای آن پیدا کردم، بنابراین دیگر آن را نخواهید دید.

    اصل عملکرد دستگاه اصلی

    خود شارژر بر اساس ساخته شده است اصل ساده- 220 ولت به سیم پیچ اولیه ترانسفورماتور وارد می شود، به ترتیب یک ولتاژ متناوب نیز روی ثانویه ظاهر می شود. به دلیل وجود چندین خروجی از سیم پیچ ثانویه (در مجموع 9 عدد) توان را می توان کنترل کرد. این بدان معنی است که بین اولین و هر یک از هشت نتیجه بعدی، همه چیز به دست می آید مقدار زیادچرخش می کند، و همانطور که می دانید هر چه تعداد چرخش بیشتر باشد، ولتاژ (یعنی جریان یا قدرت - به دلخواه) بیشتر می شود. این 8 پین به همان سوئیچ می آیند که با آن قدرت شارژ فعلی باتری را انتخاب می کنید.

    معلوم می شود که بین خروجی اول سیم پیچ ثانویه و خروجی از کلید، ولتاژ متناوب انتخاب شده توسط این کلید داریم. اما آنها هنوز نمی توانند باتری را شارژ کنند ، زیرا برای این کار باید به یک باتری دائمی تبدیل شود ، یعنی صاف شود. از این رو نام این دستگاه - یکسو کننده است.

    برای صاف کردن ولتاژ ACاین شارژر از یک چیز ساده و قابل اعتماد مانند یک پل دیودی استفاده می کند که شامل چهار دیود قدرتمند D242 است که روی رادیاتورهای جداگانه کاشته شده و روی یک بستر دی الکتریک ثابت می شود. بنابراین از سوییچ جریان ابتدا به ورودی پل دیودی و سپس از خروجی آن از طریق آمپرمتر به باتری می رود.

    انتخاب روش تعویض سیم پیچ های ثانویه

    مهم ترین مشکل این پروژه انتخاب روشی برای تغییر نتیجه های فوق الذکر سیم پیچ ثانویه بود. گزینه های زیادی وجود داشت ، اما بلافاصله تصمیم گرفتم دیوانه ترین و غیرقابل اعتمادترین آنها را امتحان کنم ، اما از نظر هزینه کار ساده ترین آنها - اتصال سروو به جای تغییر دستی موقعیت سوئیچ:

    یک سروموتور را به سوئیچ وصل کردم، سریع فریمور را نوشتم و سعی کردم آن را بچرخانم، اما همانطور که معلوم شد، قدرت کافی نبود و گاهی اوقات در بحرانی ترین مکان گیر می کرد، بنابراین این گزینه، افسوس، کار نمی کرد.

    آه بله! تقریبا فراموش کردم! در واقع، از سیم پیچ ثانویه نه 9 بلکه 10 نتیجه گرفته شد، دو مورد اول یکی برای شش ولت، دیگری برای دوازده، هر دو به سوی کلید ضامن رفتند و تنها پس از آن به پل دیود رفتند:

    اما از آنجایی که قصد نداشتم باتری ها را با ولتاژ 6 ولت شارژ کنم، این عملکرد را رد کردم، بنابراین کلید ضامن را (از طرح، و اصلاً) بیرون انداختم و سیم را برای شش ولت عایق کردم و اجازه دادم 12 ولت شود. یکی از ترانسفورماتور به طور مستقیم به پل دیود.

    پس چگونه رفت و آمد می کنید؟ در اینجا یا ترانزیستور است یا تریستور یا با استفاده از رله. و من گزینه آخر را انتخاب کردم ، زیرا رله ها از ترانزیستور / تریستور کوچکتر هستند و بر خلاف آنها ، اگر آنها را با حاشیه جریان بگیرید ، اصلاً گرم نمی شوند. بنابراین من این کار را کردم - من 8 رله کوچک با سیم پیچ 12 ولت، 4 عدد برای 16 آمپر و 4 عدد برای 12 خریدم. فضای خالیداخل جعبه شارژر:

    الگوریتم عملکرد دستگاه

    و در اینجا ، پس از تصمیم گیری در مورد روش تعویض خروجی سیم پیچ ثانویه ، لازم است "پیش تر آهنگ" را انجام دهم و در مورد الگوریتم عملکرد دستگاه صحبت کنم. در ابتدا، برای جمع آوری آن، من به سادگی اعمال خود را در هنگام شارژ باتری با این دستگاه شیطان تجزیه و تحلیل کردم و بر این اساس شروع به ترسیم اولین سکته های یک طرح جدید کردم که می توانید آن را بردارید. من اغلب چند قطعه از آن را نقل می کنم تا بفهمید چیست، پس اگر من جای شما بودم همین الان آن را باز می کردم و در طول راه مطالعه می کردم.

    بیایید با 3 شروع کنیم مهمترین پارامتر:

    // حداکثر ولتاژ * 10
    بایت maxVoltageX10 = 148;

    // ولتاژ * 10، که در آن دیگر امکان افزایش توان وجود ندارد
    بایت powerUpMaxTreshold = 142;

    // ولتاژ * 10 که در آن برق به اجبار بالا می رود
    بایت powerUpMinTreshold = 136;

    آنها در 10 ضرب می شوند، اولاً، زیرا هنگام محاسبه آنها استفاده از اعداد صحیح راحت تر است - بدون گرد کردن و غیره، و ثانیاً، زیرا چنین اعدادی در واقع روی صفحه نمایش داده می شوند و کاما، به عنوان مثال، مجازی است. بنابراین نیازی به انجام محاسبات غیر ضروری در کد نیست و بنابراین مشخص است که اینها به ترتیب 14.8، 14.2 و 13.6 ولت هستند.

    پارامتر اول حداکثر ولتاژ مجاز را به برنامه می گوید که در بالاتر از آن قدرت یک سطح کاهش می یابد و اگر جایی برای کاهش وجود ندارد، شارژر باید به سادگی خاموش شود.

    پارامتر دوم در ابتدای فرآیند شارژ استفاده می شود - پس از روشن شدن، قدرت افزایش می یابد تا زمانی که ولتاژ باتری کمتر از مقدار تعیین شده توسط آن باشد.

    پارامتر سوم به طور خاص برای مواردی که باتری متصل به خودرو شارژ می شود، معرفی شد. به عنوان مثال، شخصی رادیو را روشن کرد -> ولتاژ پایین تر از این مقدار افتاد -> ما قدرت را افزایش می دهیم. اما اگر باری که ولتاژ را تا این حد کاهش می دهد کوتاه مدت (روشن کردن چراغ جلو یا فندک) یا دوره ای با فرکانس معین (مثلاً از ضربه های ساب ووفر) باشد و به سرعت بیرون بیاید چه می شود. همانطور که مغزها قدرت را افزایش می دهند، بلافاصله کاهش می یابد، سپس بلافاصله دوباره افزایش می یابد، و غیره؟ یک دایره باطل ایجاد می شود، رله ها دائماً کلیک می کنند و فرسوده می شوند و ممکن است برای باتری نیز مفید نباشد ... مخصوصاً برای این کار، ما می توانیم با وارد کردن سیستم خود را به عنوان مثال، خودآموز کنیم. پارامتر اضافی:

    // اگر کمتر از این چند میلی ثانیه بین راه اندازی powerUpMinTreshold و کاهش آن سپری شود، آنگاه powerUpMinTreshold 1 کاهش می یابد.
    int بدون امضا powerUpMinTresholdTimeout = 60000;

    همانطور که از کامنت می بینید، به لطف این پارامتر، هر بار که مغزها قدرت را در کمتر از powerUpMinTresholdTimeout میلی ثانیه پس از افزایش آن کاهش می دهد، powerUpMinTreshold یک دهم ولت کاهش می یابد. تمام است، مشکل حل شده است: رله ها یک بار کلیک می کنند، روی دوم کلیک می کنند و روی سوم آنها قبل از کلیک کردن 10 بار فکر می کنند. هه هه، با افراد اشتباه تماس گرفتم!

    خوب، به نظر می رسد که ما کم و بیش اساس الگوریتم را فهمیده ایم، حالا بیایید به جزئیات و تفاوت های ظریف برویم.

    من بلافاصله برنامه ریزی کردم که کل سیستم از خود باتری تغذیه شود و 220 ولت از طریق یک رله کنترل شده توسط مغزها (یعنی آردوینو) وصل شود، به لطف آن می توانیم منبع تغذیه را خاموش کنیم. دستگاه در مواقع اضطراری یا زمانی که باتری در حال شارژ شدن بود. علاوه بر این، جرقه کمتری از رله نسبت به وصل کردن دوشاخه به سوکت وجود خواهد داشت، بنابراین این گزینه نیز قابل اعتمادتر است. در مورد اتصال آن البته در زیر نوشته خواهد شد، زیرا تا کنون فقط در مورد مسائل نظری بحث می کنیم.

    فرآیند روشن شدن به این صورت انجام می شود: ابتدا باید دوشاخه برق را به پریز وصل کنید که البته بعد از آن هیچ اتفاقی نمی افتد و سپس باید خود باتری را وصل کنید و در صورت روشن شدن ولتاژ بیش از هشت ولت است، کل سیستم راه اندازی می شود و شروع به شارژ می کند. اما در اینجا یکی دیگر از پارامترهای پیچیده مطرح می شود:

    // قبل از روشن کردن شارژ در میلی ثانیه تاخیر داشته باشید
    int بدون امضا powerOnDelay = 2000;

    برای مثال برای کاهش جرقه در واحد رله لازم است که با کمک آن خروجی های سیم پیچ ثانویه ترانسفورماتور در دستگاه نهایی سوئیچ می شود، زیرا جریان روی رله اول واحد رله وجود دارد. بالاتر از رله تغذیه کننده ترانسفورماتور خواهد بود، به علاوه این رله دوم، در این صورت، تعویض آن بسیار آسان تر خواهد بود. یعنی با وصل شدن باتری ابتدا برق تا حد یکسانی بالا می رود و بعد از این تاخیر رله برق روشن می شود. این چهار خط کد در رویه افزایش توان مسئول این هستند:

    اگر (powerLevel == 1) (
    تاخیر (powerOnDelay)؛

    }

    به طور کلی، این عملگر شرطی را می‌توان به گونه‌ای روشن کرد که وقتی برای اولین بار روشن می‌شود، فقط یک بار اجرا می‌شود، اما، در تئوری، اگر بعداً این اتفاق بیفتد، وقتی قدرت از سطح بالاتر به سطح اول کاهش یابد، چیزی تغییر نمی‌کند، به هر حال رله روشن خواهد شد، بنابراین تصمیم گرفتم باغ سبزیجات اضافی را حصار نکنم.

    به هر حال، یک پارامتر بسیار جالب در کد وجود دارد:

    // سطح قدرت (اولیه)
    بایت powerLevel = 0;

    حدس زدید، سطح توان اولیه را تنظیم می کند و در مراحل اولیه توسعه سیستم عامل معرفی شد و در حال حاضر به سادگی به عنوان سطح فعلی در آنجا استفاده می شود. جالب است که اگر اکنون آن را افزایش دهید، شرایطی که در پاراگراف قبلی توضیح داده شد هرگز کار نمی کند، یعنی 220 ولت هرگز به سیم پیچ اولیه ترانسفورماتور نمی رسد، به این معنی که دستگاه باتری را شارژ نمی کند. پیچالکا.

    خوب، بیایید در مورد چیزهای غم انگیز صحبت نکنیم. فرض کنید دستگاه را روشن کردیم و شارژ شروع شد. همه چیز خوب است، اما فراموش نکنید که پس از افزایش جریان، ولتاژ باتری فوراً افزایش نمی یابد و اگر قبل از افزایش تاخیر نداشته باشید، مغزها بلافاصله پس از روشن شدن، قدرت را به حداکثر سطح منتقل می کنند. این اشتباه است، بنابراین پارامتر زیر معرفی می شود:

    // زمانی که پس از آن می توانید قدرت را یک سطح، در میلی ثانیه افزایش دهید
    int powerUpTime = 5000;

    یعنی بین دو افزایش توان حداقل 5000 میلی ثانیه باید بگذرد که در طی آن ولتاژ می تواند از powerUpMaxTreshold بالاتر برود و سپس دیگر نیازی به افزایش توان نخواهد بود.

    در مورد کاهش قدرت، همه چیز در اینجا ساده است: برنامه به طور دوره ای بررسی می کند که آیا ولتاژ جریان از حداکثر سطح مجاز فراتر رفته است یا خیر، و در صورت انجام، باید قدرت کاهش یابد:

    // خاموش کردن
    اگر (ولتاژX10 > maxVoltageX10) (

    اما در صورت تحقق این شرط، باید دو گزینه برای توسعه رویدادها وجود داشته باشد. اولین مورد زمانی است که سطح توان فعلی بیشتر از یک باشد:

    در این حالت باید قدرت را در سطح پایین تری قرار دهیم و شارژ را بیشتر ادامه دهیم. در غیر این صورت، هنگامی که سطح برق از قبل پایین‌ترین حد بود، فقط برق را خاموش کنید و صفحه را چشمک بزنید. لبخند بزنید و دست تکان دهید، خلاصه باتری کاملا شارژ شده است!

    به طور کلی، همانطور که تمرین نشان داده است، باتری هایی که من شارژ کردم، حتی در سطح توان دوم، می توانند با خیال راحت از شارژ خارج شوند، زیرا جریان در حال حاضر به زیر 500 میلی آمپر کاهش می یابد. با این وجود، از عملکرد خاموش شدن خودکار غافل نشوید - باتری ها متفاوت هستند ...

    همچنین برای کاهش توان، پارامتر تاخیری مشابه پارامتر powerUpTime برای افزایش وجود دارد:

    //مکث پس از خاموش شدن، در میلی ثانیه
    int powerDownPause = 500;

    درست است، پس از کاهش مستقیم، از طریق تاخیر معمول () ساده تر اجرا می شود. من متوجه شدم که نیم ثانیه آنقدر طولانی نیست که بتوان از آن به عنوان یک شرط اضافی در دستور انتخاب استفاده کرد، بلکه برای هر یک از شماست، بنابراین اگر یکی از شما کاری برای انجام دادن ندارد، اول از همه، می توانید این قسمت را تغییر دهید. کد مطابق با اصل powerUpTime.

    شگفت‌انگیز است که چگونه قبلاً این همه نوشته‌ام و نگفتم که در واقع خود ولتاژ جریان را از کجا می‌گیرم. تثبیت:

    حلقه خالی() (
    ct=millis();

    معلوم می‌شود که در ابتدای هر تکرار حلقه "و، که همانطور که می‌دانید، پس از راه‌اندازی سیستم به سادگی بی‌پایان تکرار می‌شود، دو کار انجام می‌دهیم. اول، زمان جاری از شروع ریز مدار را بر حسب میلی‌ثانیه می‌نویسیم. ، به متغیر ct، و سپس با استفاده از رویه analogRead() ولتاژ جریان را با استفاده از شماره ورودی آنالوگ نظارتی مشخص شده در ابتدای طرح محاسبه می کنیم:

    // ورودی آنالوگ برای نظارت بر ولتاژ
    بایت ولتاژ ورودی = 5;

    و همچنین 2 ضریب که بعداً به تفصیل در مورد آنها صحبت خواهم کرد:

    // ضریب محاسبه ولتاژ (تقسیم بر آن)
    ولتاژ شناورX10ضریب = 5.11;

    // محاسبه ولتاژ افست (اضافه شده است)
    int ولتاژX10Shift = 35;

    اما اگر همه چیز به این سادگی بود خیلی ساده بود. بنابراین، برای پیچیده‌تر کردن الگوریتم، 2 متغیر دیگر به کد وارد شد:

    بولی goingUp = true، isUpAfter = false;

    اولین متغیر به ما می گوید که فرآیند شارژ در حال حاضر در چه وضعیتی است. مقدار آن درست است تا زمانی که قدرت برای اولین بار کاهش یابد. یعنی goUp = true به ما می‌گوید که ما چندی پیش شارژر را روشن کردیم و همچنان باتری را با حداکثر جریان ممکن شارژ می‌کند و هرگز آن را پایین نمی‌آورد تا از ولتاژ اضافی محافظت کند.

    همه چیز با مورد دوم پیچیده‌تر است - به ما می‌گوید که آیا افزایش توان پس از نادرست شدن goUp رخ داده است یا خیر و توسط کد ساده زیر در پایان روند افزایش توان تنظیم می‌شود:

    if (goingUp == false) (isUpAfter = true;)

    در حال حاضر، احتمالاً به این فکر می کنید که چرا به این همه نیاز دارید؟ همین الان توضیح میدم!

    دلیل اضافه شدن این دو متغیر فقط اجرای قابلیت شارژ باتری ایستاده روی خودرویی با بار متغیر متصل به آن بود. اولین هدف تابع goUp تعیین پارامتری است که با آن افزایش توان کار خواهد کرد:

    اگر ((powerLevel<8) && (ct >powerTime + powerUpTime) && ((goingUp == درست && ولتاژX10< powerUpMaxTreshold) || (goingUp == false && voltageX10 < powerUpMinTreshold))) {

    همانطور که می بینید، در مرحله اول شارژ، اگر ولتاژ جریان کمتر از powerUpMaxTreshold باشد، توان را افزایش می دهیم و در فاز دوم - اگر کمتر از powerUpMinTreshold باشد: اینها همان پارامترهایی هستند که در ابتدا در مورد آنها صحبت کردم. .

    اگر عبارت شرطی نوشته شده در بالا همچنان اجرا شود و همین goUp برابر با false باشد، سیستم ثبت اختراع وارد عمل می شود. تایید اضافیولتاژ:

    بولی stillLow = درست;
    اگر (goingUp == نادرست) (
    برای (int x=0; x<= upCycles; x++){
    voltageX10analogRead(ولتاژ ورودی)+ولتاژX10Shift)/ولتاژX10ضریب;
    if (voltageX10 > powerUpMinTreshold) (sillLow=false; break;)
    تاخیر (1);
    }
    }
    اگر (هنوز کم == درست) (

    که در آن یک شخصیت جدید وارد صحنه می شود:

    //تعداد تکرارهای میلی ثانیه ای بررسی ولتاژ قبل از روشن شدن
    int upCycles = 5000;

    واقعیت این است که با سیگنال افزایش قدرت پس از نادرست شدن goUp، ما به احتمال زیاد با نوعی بار ناپایدار روبرو هستیم - همان ساب ووفر، همانطور که قبلاً فرض کردم، یا زباله های ناشناخته دیگری. و اگر چنین است، پس چرا باید به جای اینکه احمقانه برق را بالا ببریم، یک بار دیگر روی رله های گرانبهای خود کلیک کنیم و برای لحظه ای خطر بالاتر بردن ولتاژ باتری از حداکثر تعیین شده را داشته باشیم. یک چک ساده: 5 هزار بار (upCycles) با فاصله یک میلی ثانیه ولتاژ جریان را چک کنید و اگر حداقل یک بار شنیدید حداقل یک بار از powerUpMinTreshold بیشتر شد - همین است خان افزایش نمی یابد ماهیگیری را خاموش کنید میله ها! یک بررسی ساده اما موثر

    isUpAfter به نوبه خود به ما کمک می کند تا تابع کاهش powerUpMinTreshold را پیاده سازی کنیم (در ابتدا در مورد آن صحبت کردم)، در اینجا به نظر می رسد:

    if ((isUpAfter == true) && (powerTime > ct - powerUpMinTresholdTimeout)) (powerUpMinTreshold = powerUpMinTreshold - 1;)

    در اینجا powerTime زمان آخرین افزایش توان تا به امروز است.

    واقعیت این است که، علاوه بر شرایط powerUpMinTresholdTimeout که در بالا ذکر شد، فقط زمانی باید آن را کاهش دهیم که پس از اینکه قبلاً آن را افزایش داده‌ایم، پس از شروع پایین آوردن آن، پاور را کاهش دهیم. گفتم با این isUpAfter همه چیز پیچیده است!

    در اینجا چنین الگوریتمی وجود دارد، باور کنید یا نه. بقیه جزئیات و ظرافت های آن را در ادامه روایت مستقیماً درباره مونتاژ دستگاه خواهم گفت.

    آماده سازی جعبه رله

    بنابراین، با فهمیدن اینکه کدام مخاطبین رله مسئول چه چیزی هستند و با تصمیم گیری در مورد قرارگیری آنها نسبت به یکدیگر، شروع به چسباندن کردم:

    برای انجام این کار، من از "لحظه - کریستال" در نزدیکی آن استفاده کردم. من نمی گویم که این نوعی چسب فوق العاده دوپر است، اما از نظر خواص آن برای من مناسب است. البته بهتره از "چسب مرگ" خیگیر استفاده کنی سریعتر خشک میشه و در آخر سفت میشه ولی تو تیوپ 2-3 برابر کمتره و قیمتش یک و نیم برابر Moment هست. بنابراین، همانطور که قهرمان یک کارتون خوب شوروی گفت: "و به همین ترتیب پایین خواهد آمد!"

    در مورد چسب زدن، همه چیز ساده است و روی لوله نوشته شده است - روی هر دو سطح بمالید، 5-10 دقیقه صبر کنید و محکم فشار دهید (آره، آنقدر محکم که زغال سنگ بین رله ها به الماس تبدیل شود)

    همین، رله ها فشرده شده اند. همانطور که می بینید، من کنتاکت های مرکزی را در کنار یکدیگر قرار دادم، آنها هنوز باید به یکدیگر متصل شوند:

    من همین کار را با رله های بزرگ انجام دادم و سپس این 2 بلوک حاصل را به یکدیگر چسباندم و پس از آن شروع به لحیم کردن سیم ها به کنتاکت ها کردم. سیم زرد ضخیم به نوبه خود به همه رله ها متصل می شود - این گذرگاه خروجی است که سپس به پل دیود می رود، سیم های قرمز - به 4 خروجی اول از سیم پیچ ثانویه ترانسفورماتور و سیم زرد کوچک. که به نوبه خود از تمام رله ها عبور می کند سیم پیچ +12 ولت ثابت است. و معایب سیم‌پیچ‌ها، همانطور که حدس زده‌اید، قهوه‌ای و سفید است، سیم‌کشی‌هایی که در آنجا وجود دارد، به زودی به آنها باز خواهیم گشت.

    طراحی مشابه، اما از سوی دیگر، با سیم های لحیم کاری جدید برای اتصال سیم پیچ های ثانویه. علاوه بر این، از رله های بزرگ، 1 خروجی دارای 2 سیم کشی است - این مدل رله برای توزیع یکنواخت بار و در نتیجه تولید گرمای کمتر به این صورت ساخته می شود:

    از آنجایی که جریان کشیده شده توسط سیم پیچ ها در چنین رله هایی (~ 100 میلی آمپر) بسیار بیشتر از حداکثر جریانی است که می توان از خروجی های آردوینو (~40 میلی آمپر) یا رجیستر شیفت 74HC595 (~25 میلی آمپر) گرفت، ترانزیستورها باید برای روشن کردن سیم پیچ های رله استفاده شود. و به نظر می رسد KT315 های نارنجی خوب قدیمی برای این کار ساخته شده اند!

    این ترانزیستورهای npnبنابراین، در مدار، اگر به صورت ساده توضیح داده شود، جریان باید از مثبت به سیم پیچ، سپس از آن به کلکتور ترانزیستور و بیشتر از امیتر ترانزیستور به منفی برود. این ترانزیستور با جریانی از پایه به امیتر باز می شود، اما جریان مورد نیاز در آنجا بسیار کم است، بنابراین پایه های ترانزیستورها را از طریق مقاومت های 1 کیلو اهم (1000 اهم) وصل می کنیم:

    اکنون باقی مانده است که سیم های کوتاه را به مقاومت ها لحیم کنید و فراموش نکنید که همه چیز را با دقت جدا کنید و می توانید آن را تعمیر کنید - من شخصاً تصمیم گرفتم ترانزیستورها را به رله های جانبی بچسبانم تا گیج نشوند و چیزی از بین نرود:

    همانطور که در عکس می بینید، ترانزیستورها در هر دو طرف بلوک رله کاملاً قرار گرفته اند، بقیه کنتاکت ها را نیز با چسب پر کردم تا مطمئن شوم هیچ چیز در هیچ جایی اتصال کوتاه یا سوخته نخواهد شد:

    ترانزیستورها چسبانده شده اند و بلوک تقریباً آماده است:

    اکنون با این سوال روبرو هستیم که ترانزیستورها را به چه چیزی وصل کنیم؟ به آردوینو؟ خیر، در این صورت خروجی های کافی برای سایر اجزا وجود نخواهد داشت و در چنین شرایطی، ریزمدار صرفه جویی وارد عمل می شود - رجیستر شیفت 74HC595. در اینترنت خیلی در مورد او نوشته شده است، بنابراین من 3 پاراگراف را در اینجا نمی نویسم، فقط می گویم که به لطف چنین میکرو مدارهایی می توانید با اهدای تنها سه خروجی برای این کار تعداد خروجی های آردوینو را افزایش دهید. علاوه بر این، آنها را می توان به صورت سری در یک زنجیره متصل کرد. بخور انواع مختلفریز مدارهای مشابه، به عنوان مثال، 16 خروجی یا 8، در موارد مختلف. در این پروژه تصمیم گرفتم از گزینه 8-out در یک بسته کوچک SO-16 استفاده کنم. اگرچه کار جواهرات است، اما همه اینها فضای کمی را اشغال می کند، که در حال حاضر در بدنه جمع و جور دستگاه که برای چنین پیشرفت هایی طراحی نشده است، کم است:

    برای نشان دادن قدرت فعلی دستگاه، تصمیم گرفتم از 8 LED استفاده کنم، یکی برای هر جفت ترانزیستور / رله، برای این کار از یک کابل هشت سیم استفاده کردم، هر سیم را به کانال کنترل مربوطه لحیم کردم، اما نه بلافاصله به رجیستر. اما در مورد مقاومت ها هیچ تفاوت الکتریکی وجود ندارد، اما به نظر من از نظر مکانیکی قابل اطمینان تر است. من، پس از بررسی کامل (در ادامه در مورد آن بیشتر)، ریز مدار را با همان چسب پر کردم و یک بار دیگر تمام ترانزیستورها را با آن مرور کردم - اکنون این سیستم حتی "جامد" و قوی تر شده است:

    سیستم نشانگر ولتاژ

    زمان تست های نظری سیستم نمایش فرا رسیده است. برای نمایش ولتاژ فعلی باتری، از یک صفحه نمایش از یک واحد سیستم قدیمی از زمان اولین پنتیوم ها استفاده کردم. هیچ ترفندی با آن وجود ندارد، هر بخش یک LED سبز ساده است که از 2-2.1 ولت کار می کند. تنها استثنا یک است - در آن 2 بخش موازی هستند و روی یک پا بیرون می آیند. در مجموع، صفحه نمایش دارای 16 پایه است: 1 مثبت و 15 منهای. به این معنی که برق همیشه به مثبت عرضه می شود و تامین زمین به یک پایه خاص بخش مورد نیاز ما را مشتعل می کند - همه چیز بسیار ساده است، اما چگونه آن را اجرا کنیم؟ برای این کار دوباره از شیفت رجیسترها این بار 2 عددی استفاده می کنیم. برای نمونه سازی تخته نانمن از همان 74HC595 استفاده کردم، اما در حال حاضر در بسته DIP-16، زیرا کار با آنها بسیار راحت تر است. در تصویر زیر، همانطور که مشاهده می کنید، سیستم از قبل مونتاژ شده و در حال اجرا است:

    ولی این سیستمبسیار متفاوت از آنچه در دستگاه نهایی گنجانده شده بود. بیایید با این واقعیت شروع کنیم که در ابتدا تصمیم گرفتم از یک تثبیت کننده برای روشن کردن صفحه نمایش استفاده کنم، اگرچه در نهایت آن را رد کردم و هر پایه صفحه را از طریق یک مقاومت 560 اهم وصل کردم، ثانیاً، در این مدار، LED ها از طریق مدار دیگری تغذیه می شوند. تثبیت کننده، علاوه بر این، تغذیه می شود و خود شیفت ثبت می شود. اما در نهایت، تنها یک تثبیت کننده در شارژر من وجود داشت - همانطور که ممکن است حدس زده باشید، در KREN5V اتحاد جماهیر شوروی ساخته شده است، برای 5 ولت.

    با این حال ، در این مرحله ، روش تغذیه آهن چندان مهم نبود - نکته اصلی این بود که یاد بگیرید چگونه اطلاعات معنی دار را روی صفحه نمایش دهید ، که برای آن لازم بود بفهمیم که هر یک از خروجی های رجیستر مربوط به کدام بخش است و سپس دو آرایه در سیستم عامل ایجاد کنید - ده ها و یک ها، که در آنها با استفاده از یک ها و صفرها، ماسک مورد نظر را برای هر عدد نمایش داده شده پر کنید، یعنی 0-19 برای دو کاراکتر اول صفحه و 0-9 برای شخصیت سوم:

    // الگوهای صفحه نمایش
    کاراکتر* ده ها=("10000001"،"10111011"،"01100001"،"00101001،"00011011،"00001101،"000000101،"10101011،"00000000000000010111010، "01100000"، "00101000"، "00011010"، "00001100"، "00000100"، "10101010", "00000000"، "00001000");
    char* ones=("10000010"،"10111110"،"10001001"،"10011000،"10110100،"11010000،"11000000،"10111010،"10000000000.

    همچنین ترتیب اتصال رجیسترها در حال انجام است کار بیشترتغییر کرده است - بلوک رله اولین مورد در زنجیره خواهد بود و تنها پس از آن صفحه نمایش، رله ها هنوز مهمتر هستند، با این حال، در حال حاضر این چندان مهم نیست، زیرا ترتیب واقعا مهم نیست - فقط در سیستم عامل ، در روال خروجی، باید چند جای خط و همه چیز را تغییر دهید.

    وقتی سیستم شروع به کار کرد، به جای رجیستر شیفت سوم، یک بلوک رله آماده را به آن وصل کردم. و برای اینکه رله ها نیز کلیک کنند، من به یک منبع تغذیه دوازده ولتی نیاز داشتم (نه از سوئیچ چینی، بلکه تثبیت شده، با انتخاب ولتاژ صاف). اگر می خواهید از یک ناپایدار استفاده کنید - از یک 9 ولت یا حتی 7.5 استفاده کنید - آنها فقط بدون بار 12 ولت خواهند داشت. نکته اصلی - دائمی را با متغیر اشتباه نگیرید! عکس بعدی نشان می دهد که چگونه 12 ولت با دو شاخه با سیم در گوشه بالا سمت راست به شیار وصل می شود 🙄

    اکنون صفحه نمایش کار می کند! من طرحی نوشتم که اعداد صفر تا 199 را یکی یکی روی صفحه نمایش می دهد و نمایش دودویی آنها را روی LED های سمت راست نشان می دهد. خوب، سرگرم کننده است!

    کار با رجیستر شیفت همانطور که گفتم روی سه سیم انجام می شود. شماره تماس آنها در همان ابتدای طرح من تنظیم شده است:

    // پینی که به ورودی ST_CP 74HC595 متصل است
    int latchPin = 8, voltageX10,voltageGuard,ons,dz,
    // پینی که به ورودی SH_CP 74HC595 متصل است
    پین ساعت = 12،
    // پینی که به ورودی DS 74HC595 متصل است
    داده پین ​​= 11;

    هنگامی که سیستم شروع به کار می کند، حالت عملکرد این مخاطبین، و همچنین بقیه موارد استفاده شده توسط ما، به صورت OUTPUT تنظیم می شود:

    void setup()(
    pinMode (latchPin، OUTPUT)؛
    pinMode (clockPin، OUTPUT)؛
    pinMode (DataPin، OUTPUT)؛
    pinMode (relay220Pin، OUTPUT)؛
    pinMode (fanPin، OUTPUT)؛

    خوب، خروجی اطلاعات به خود ثبات ها به صورت زیر است:

    digitalWrite (latchPin، LOW)؛



    علاوه بر این، در ابتدا ()shiftOut به عنوان ورودی می گیرد متغیر نوعبایت، و از آنجایی که نوشتن یک و صفر مستقیماً در رجیسترها برای ما بسیار واضح تر است، کد استفاده می کند عملکرد ویژه bitseq()، که الگوهای بالا را دقیقاً به همان چیزی که shiftOut می‌خواهد تبدیل می‌کند:

    بایت بیت‌ثق (char s)(
    byteab=0;
    برای (بایت ba=0؛ ba<8; ba++){
    if (s == "0") (bitWrite(ab,ba,0);) else (bitWrite(ab,ba,1);)
    }
    بازگشت ab;
    }

    در آن زمان، دسکتاپ من چیزی شبیه به عکس زیر بود. فکر نکنید که آمبولانس روی مانیتور چیست. سریال عالیه من برای بار دوم دارم میبینمش 🙄 ضمنا من برای اتصال مدارهای غیر برقی در دستگاهم از کابل جفت پیچ خورده استفاده کردم که رده 5e هست فقط زیاد دارم - کابلهای قدیمی رو از پشت بام پرت نمیکنم ولی حل میشه آی تی. اما برای چنین چیزهایی، هیچ سیم کشی خوب نیست. آنهایی که من استفاده کردم داخل جامد نیستند، بلکه رشته ای هستند، بنابراین بسیار الاستیک هستند و شکننده نیستند، همچنین عایق با کیفیت بالایی دارند. اما من از یک جفت پیچ خورده معمولی با هسته های جامد استفاده نمی کنم - خیلی محکم خم می شود (خوب، نسبتا) و به طور کلی لحیم کردن آن به ریزمدارهای کوچک در بسته SO-16 غیر منطقی است. شما می گویید، می گویند چه لزومی به استفاده از DIP میکروهی بود؟ هه، شما ندیدید که مازوخیسم در حال حاضر جریان داشته باشد، پس بیایید گربه را از شاخ نکشیم (آره) - بیا برویم!

    در واقع قرار دادن تراشه های کوچک در داخل نشانگر چندان ایده بدی نیست. از این گذشته ، به هر حال در کیس قدیمی جایی وجود ندارد ، پانل جلویی باید روی اسپیسرهای کوچک قرار می گرفت ، و اگر از رجیسترها در موارد DIP استفاده می کردم - uuuuuu ، نمی دانم چگونه همه چیز در آنجا جا می شود!

    همانطور که گفتم، در نسخه نهایی، بخش ها از طریق مقاومت ها وصل می شوند، و نه مستقیم، اما، با این وجود، تصمیم گرفتم گزینه اول را نیز نشان دهم: شاید کسی آن را بیشتر دوست داشته باشد. از آنجایی که خود این صفحه با چیزی در سمت عقب پر شده است (این پرکننده های شما چه چیز منزجر کننده ای هستند) و سطح این پرکننده نیز به سمت داخل مقعر است، من یک صفحه تخت کوچک را از یک کارت پرداخت پلاستیکی جدا کردم، حدس بزنید. انحصار بلاروس در زمینه مخابرات که من مستقیماً روی صفحه چسباندم و سپس خود رجیسترها را روی آن چسباندم و قبلاً اولین پایه را در پشت هر یک از آنها علامت زده بودم (چون "نظرات را قاطی نکنید ، کوتوزاو !").

    بعد از لحیم کردن تمام سیم ها و دوباره بررسی اینکه همه چیز کار می کند، همه چیز را با چسب پر کردم. از آنجا که یک حرکت اشتباه و سیم کشی از تماس قطع می شود، چیزی اتصال کوتاه می کند و یک پیچالکا بزرگ و بزرگ ایجاد می شود. اما با چسب این اتفاق نمی افتد، با چسب همه چیز خوب است. چسب، به طور خلاصه، قوانین. تا زمانی که مجبور نیستی آن را پاره کنی 😆 👿 اما بیایید در مورد چیزهای غم انگیز صحبت نکنیم، بعد از این دستکاری ها چه اتفاقی افتاد:

    بنابراین من حتی این دو بلوک را به هم وصل کردم (البته به طور موقت) تا یک بار دیگر از tsyferki چشمک زن و رله های کلیک لذت ببرم:

    متأسفانه، هنگام ترکیب صفحه با رجیسترها در یک کل، مجبور شدم ترتیب اتصال پاهای آن را کمی تغییر دهم، بنابراین پس از راه اندازی کل سیستم، به جای اعداد عربی تعدادی اعداد بیگانه را دیدم:

    اگرچه در واقع بیگانه کمی در یک و نه وجود دارد ، فقط در وسط نوعی زباله وجود داشت ، اما اینها همه چیزهای بی اهمیت هستند. مرحله بعدی پیچ کردن ولت متر بود، یعنی ایجاد یک سنسور ولتاژ، زیرا الگوریتم شارژر من باید به ولتاژ جریان بستگی داشته باشد.

    اندازه گیری ولتاژ با آردوینو

    آردوینو چیز خوبی است، در ابتدا دارای ورودی های آنالوگ است که می توانید ولتاژ را در زمان واقعی نظارت کنید. تنها نکته این است که محدوده اندازه گیری این ورودی ها از صفر تا تنها پنج ولت است و تقریبا تا 15 ولتاژ خواهیم داشت، بنابراین این مشکل باید به نحوی حل شود. و در اینجا ساده ترین تقسیم کننده ولتاژ روی دو مقاومت به کمک ما می آید. مثلاً برای حداکثر مطلق 20 ولت می گیریم (خب، برای هر موردی، تا چیزی نسوزد) و سقف ما 5 است، یعنی یک چهارم حداکثر، یعنی ما باید ولتاژ را بر 4 تقسیم کرد. برای این کار، 2 مقاومت از این اندازه‌ها را می‌گیریم، به‌طوری‌که ارزش اولی 1/4، و ارزش دومی 3/4 از مجموع ارزش‌های آنها باشد. به عنوان مثال، 10 و 30 کیلو اهم. یا 5 و 15 کیلو اهم، یا 2.5 و 7.5، شما ایده را دریافت می کنید. ارزش کمتری ندارد، زیرا جریان در آنجا کم است. خوب، طبق این طرح وصل کنید: 10 بین ورودی آنالوگ و زمین، و 30 بین ورودی آنالوگ و خروجی شارژ به باتری.

    اما همه چیز به این سادگی نیست - رویه analogRead() مقداری از 0 تا 1024 را به شما می دهد که در آن صفر صفر است و 1024 برای آن 5 ولت یا برای ما 20 ولت است. بنابراین، برای محاسبه مجدد این مقدار، باید ضریب خاصی را وارد کنیم که آن را به عنوان یک ثابت در هدر سیستم عامل قرار می دهیم (float voltageX10Coefficient = 5.11;). با کمی نگاه کردن به آینده، می گویم که بعداً ولتاژی که آردوینو می بیند، چه زمانی است جریان بالاشروع به پریدن با پخش تا نیم ولت کرد، بنابراین ما مجبور شدیم سنسور بداهه خود را از طریق یک دیود وصل کنیم، پس از آن یک خازن 16 ولتی 1000 mF قرار دادم و یک رله 220 ولتی را در آنجا وصل کردم، اما بیشتر در مورد آن در پایان. چرا الان در این مورد صحبت می کنم؟ چون دیود همونطور که میدونید کمی ولتاژ رو پایین میاره پس من ضریب دومی رو معرفی کردم که جبران کننده وجود این دیوده (int voltageX10Shift = 35;) یعنی اول ضریب دوم به مقدار خروجی اضافه میشه و سپس آنچه اتفاق افتاد بر اولی تقسیم می شود.

    در نتیجه، نظارت بر ولتاژ موفقیت آمیز بود - قرائت ها را با تستر مقایسه کنید (این یک باتری متصل به دستگاه نیست، بلکه همان منبع تغذیه تثبیت شده خانگی است):

    پنل جلو شارژر

    بعد، نوبت به انجام چهره دستگاه ما می رسد. در ابتدا به فکر ساختن و چسباندن یک تابلوی جدید در آنجا بودم، اما با تأمل، نحوه استفاده از کتیبه‌های قدیمی را فهمیدم، بنابراین همه چیز کاملاً معنی‌دار بود. به جای تنظیم کننده جریان، سوراخ هایی برای LED ها ایجاد می شود و فلش در بالا فقط نشان می دهد که جریان در کدام جهت بیشتر خواهد بود، خوب، خنک!

    اکنون LED ها در جای خود قرار داده شده اند و صفحه نمایش در یک مکان جدید قرار داده شده است و حتی از بقیه سوراخ ها استفاده شده است: در سوراخ رگولاتور فعلی یک لامپ متصل به سیم پیچ اولیه وجود خواهد داشت. ترانسفورماتور - هنگامی که شارژ در حال انجام است، یعنی زمانی که ترانسفورماتور 220 ولت تامین می شود، روشن می شود. و اگر به نظر می رسد شارژ در حال شارژ شدن است، اما چراغ خاموش است، بررسی کنید که آیا فراموش کرده اید دوشاخه را در پریز قرار دهید! در سوراخ کلید 6-12 ولت یک لبه پلاستیکی برای LED تعبیه شده است که از طریق یک مقاومت بدون تثبیت کننده مستقیماً به باتری متصل می شود و با روشنایی درخشش آن میزان شارژ باتری را مشاهده می کنید. . این در صورتی مفید است که باتری به طور کلی مرده باشد و حتی پنج ولت روی آن وجود نداشته باشد تا مغز را تغذیه کند - در این صورت دیود تاریک می درخشد و هیچ سوالی وجود نخواهد داشت، آنها می گویند شاید دستگاه خراب است. اگرچه، البته، بهانه می آورم: اگر سوراخ نبود، حتی به این فکر نمی کردم که چیزی در آنجا وارد کنم. اگر منظورم را بدانید همیشه در مورد مردان اینگونه است.

    در ضمن شما می گویید می گویند آندریوشا کجا دیدی باطری ماشین 5 ولت خالی شده؟ خوب، آن موقع من آنها را جایی ندیدم، اما بعد از اتمام کار با این اتهام، یکی از اینها را برای من آوردند. 3 ولت. و من حتی آن را شارژ کردم، و حتی زنده است، معتقدم، و تا حد مرگ سولفاته شده است. دومی هم در شرایط مشابه بود، اما هیچ چیز او را نجات نداد 😆

    پوزه در آن زمان از پشت اینگونه بود:

    و در عکس بعدی به آرامی چسب را جدا می کنم و سیم کشی را با مقاومت تعویض می کنم. البته استابلایزر گوشه سمت چپ پایین عکس رو هم به عنوان غیر ضروری قطع کردم. و اتفاقاً، لحیم کاری مقاومت ها بسیار ساده تر از سیم کشی است - اگر دوباره این کار را انجام می دادم - بلافاصله این کار را با مقاومت ها و این ریزمدارهای کوچک انجام می دادم.

    همچنین در این عکس در گوشه سمت چپ بالا می توانید نحوه اتصال LED ها را مشاهده کنید. آنها یک منفی مشترک دارند، در امتداد شعاع داخلی می رود و از طریق یک مقاومت 3.3 کیلو اهم به منفی مشترک دستگاه متصل می شود - من این مورد را انتخاب کردم تا روشن باشد و کور نباشد. به نظر می رسد درست کار کرده است. چرا فقط یک مقاومت وجود دارد؟ زیرا در هر لحظه از زمان، به استثنای لحظه تعویض بار بین رله ها، تنها یک LED روی نمایشگر روشن می شود.

    چرا به جز لحظه تعویض؟ زیرا اگر یک رله خاموش شود و دومی روشن شود - در لحظه خاموش شدن اولی و در لحظه روشن شدن دومی، جرقه ای روی کنتاکت های آنها ظاهر می شود، این جرقه ها رسوباتی را روی کنتاکت ها تشکیل می دهند. ، که به دلیل آن به مرور زمان شکست خواهند خورد - مقاومت آنها را افزایش می دهد ، شروع به گرم شدن می کنند و بس ، دریای یادگاری! پس درست است که اول رله دوم را روشن کنیم و به محض روشن شدن رله اولی را خاموش کنیم، سپس از شر جرقه ها خلاص می شویم و رله ها تا آخر عمر با خوشی زندگی می کنند! به هر حال، همه چیز دقیقاً مانند این روی سوئیچ بومی انجام می شود، بنابراین نه، من آن را به ذهنم نرساندم، تشویق و گل ها به سمت ماشین می روند این موردطراحان دستگاه اصلی و نه بنده حقیر شما. خوب، همه چیز برای گربه کارناوال نیست. 🙄

    به هر حال، تأخیر سوئیچینگ بین رله ها با این پارامتر تنظیم می شود:

    // مدت زمان انتقال بین رله ها بر حسب میلی ثانیه
    بایت relayTransition = 80;

    اما چه اتفاقی می‌افتد اگر به روشی جادویی، دو یا چند رله همزمان برای مدتی بیشتر از زمان تعیین‌شده برای سوئیچینگ، به دلیل نوعی اشکال روشن شوند؟ و بسیار بد خواهد بود: در نظر بگیرید که بخش سیم پیچ ثانویه را اتصال کوتاه می کنید. سیم ها شروع به ذوب شدن می کنند، دود از ترانسفورماتور می آید و به طور کلی آرماگدون اتفاق می افتد. همانی که مایکل بی از آن فیلم گرفت.

    بنابراین، آقایان عزیز، خانم‌ها و ون دامم‌ها، به‌ویژه برای این کار، سیستم حفاظتی در برابر چنین آرماژدی را ارائه کردم. یک مقاومت 220 اهم به پلاس هر LED متصل است. چرا دقیقا 220؟ اولاً به این دلیل که در آن روز ماه در زحل بود و ثانیاً به این دلیل که قبل از سال نو اتفاقاً یک دو دستگاه ضبط داخلی و همچنین یک پیانوی الکترونیکی داخلی (یا پیانو، نمی دانم،) را از لحیم خارج کردم. اما به طور خلاصه پیانو نیست)، بنابراین من یک جعبه کامل از این مقاومت های 220 اهم را لحیم کردم، شما باید آنها را در جایی قرار دهید - خوب، استفاده عالی!

    از طرف دیگر، همه این مقاومت ها از طریق یک مقاومت 4k7 به زمین متصل شده و به زمین کشیده می شوند (این یعنی 4.7 کیلو اهم، وقت آن است که چیزها را به نام خود بخوانیم!)، که من نیز جهنم های بسیار بیشتری دارم. بنابراین ما در این نقطه G، جایی که همه این 9 مقاومت با هم همگرا می شوند، ولتاژ را اندازه می گیریم، یعنی این نقطه را به ورودی آنالوگ آردوینو بعدی وصل می کنیم که با پارامتر زیر تنظیم می شود:

    // ورودی آنالوگ برای نظارت بر تعداد رله های روشن
    بایت guardInput = 4;

    و با این ولتاژ، ما بلافاصله می بینیم - چند LED در حال حاضر در آنجا روشن شده است، و از آنجایی که آنها مستقیماً به ترانزیستورها متصل هستند، این همان چیزی است که می بینیم چند رله در حال حاضر روشن هستند، و این دقیقاً همان چیزی است که ما و آن هستیم. در این شرایط لازم است! یعنی آستانه ولتاژ را قرار می دهیم که بالاتر از آن اولاً با کمک رله مربوطه ولتاژ 220 ولت را قطع می کنیم و ثانیاً با رله ها سعی می کنیم وضعیت را اصلاح کنیم و به محض اصلاح آن را روشن می کنیم. 220 دوباره و به کار خود ادامه دهید انگار هیچ اتفاقی نیفتاده است. همه چیز ساده و قابل اعتماد است، من بررسی کردم!

    این آستانه در اینجا تنظیم شده است:

    // حداکثر مقدار مجاز guardInput
    بایت guardTreshold = 160;

    و روند بررسی بالا در هر چرخه حلقه انجام می شود و به صورت زیر است:

    // تعداد رله های فعال و خاموش شدن خودکار - بازیابی - فعال را بررسی کنید
    اگر (voltageGuard > guardTreshold) (
    digitalWrite (relay220Pin، LOW)؛
    در حالی که (voltageGuard > guardTreshold) (
    digitalWrite (latchPin، LOW)؛
    shiftOut(dataPin، clockPin، MSBFIRST، bitseq(ones));
    shiftOut(DataPin، ClockPin، MSBFIRST، bitseq(ده ها));
    shiftOut (DataPin، ClockPin، MSBFIRST، bitseq (رله));
    digitalWrite (latchPin، HIGH);
    voltageGuard=analogRead(guardInput);
    }
    digitalWrite (relay220Pin, HIGH);
    }

    و اکنون من عکسی را که 9 پاراگراف قبل وعده داده شده را نشان خواهم داد، حداقل فقط برای نجابت:

    آ پوشش حذف شدهتنش را به ما نشان می دهد میلوتا!

    رله اتصال AC

    با این حال، ما باید ادامه دهیم. همانطور که می بینید، شارژر به تدریج جمع می شود، سیم ها به تدریج طولانی می شوند و دو شخصیت جدید وارد صحنه می شوند - همان رله 220 ولت و یک خنک کننده کوچک دوازده ولتی - هشتاد نفر از رایانه:

    Relyukha معمولی است، هیچ تفاوتی با دیگران ندارد. 220 ولت را با 10 آمپر می کشد. اما ما به این نیاز نداریم، یک فیوز 1 آمپری نیز داریم. اما سهام در چنین چیزهایی خوب است، قابلیت اطمینان است. سیم پیچ این رله از 12 ولت کار می کند اما برای 5 هم همینطور است. من بلافاصله روی علی 25 عدد خریدم با قیمت پایین. چرا من 12 گرفتم و نه 5؟ ببین، هر جا آن را روشن کنم - هنوز به ترانزیستور نیاز داری، درست است؟ حتی اگر 5 ولت بود. فقط حالا، اگر روی 5 باشد - باید از طریق یک خرد متصل شود، که به هر حال تمام مغزها از طریق آن تغذیه می شوند، از این هم بیشتر گرم می شود - لعنتی چرا لازم است؟ شما می توانید مستقیماً روی 12 کلیک کنید، اما حداقل 15 وجود دارد - او اهمیتی نمی دهد، او کار می کند. علاوه بر این، شروع از هشت ولت. من ال ای دی رو فقط برای نشون دادن موقع تست بهش وصل کردم مثلا اگه ال ای دی روشن بشه کار میکنه و عملا 220 ولت رفت تو ترانس. مستقیماً از طریق همان KT315 به خروجی آردوینو وصل می شود، مانند بقیه رله ها در همان بلوک. و بله، برش نیز در 1 کیلو اهم است، اگرچه احتمالاً 2 در آنجا کار می کند، می توانید مواردی را که بیشتر هستند قرار دهید، اما در نظر داشته باشید که هر چه مقدار برش کوچکتر باشد، جریان بیشتری از ترانزیستور به جایی نمی رسد. برای بهره وری کلی انرژی، این + - چند میلی آمپر اهمیتی ندارد، اما برای خروجی های جریان کم آردوین ها و رجیسترها - واقعاً نه، بنابراین اینجاست.

    گنجاندن این رله، همانطور که احتمالاً قبلاً فهمیده اید، با کمک رخ می دهد

    digitalWrite (relay220Pin, HIGH);

    و خاموش شدن با

    digitalWrite (relay220Pin، LOW)؛

    اتصال کولر برای خنک کردن شارژر

    اما کولر با توجه به برچسب روی آن 140 میلی آمپر مصرف می کند، بنابراین KT315 دیگر در اینجا رول نمی شود، آنها طبق مشخصات فقط تا صد هستند، بنابراین من KT815A را گرفتم. آنها تا یک و نیم هزار میلی آمپر می روند و کافی است. گزینه های دیگری هم وجود دارد، من فقط سعی می کنم از چیزی که دارم زیاد استفاده کنم، شاید شما مثلاً یک ترانزیستور دیگر برای خنک کننده داشته باشید، اگر تا 20 ولت و تا 150 میلی آمپر بکشد - اگر n-p-n باشد. ، سپس فقط پین اوت را برای پاها ببینید، و اگر p-n-p، باید مدار را کمی تغییر دهید، اما در این مورد همه چیز ناچیز است. فقط یه چیز دیگه اینجا هست...

    آیا تا به حال صدای بوق سردتر را شنیده اید؟ نه، نه از چرخش، فقط بوق می دهد؟ من هم نشنیدم اما اینجا شانس آوردم. و همه به دلیل آردوینو مقادیر میانیولتاژهای خروجی (بیشتر از صفر، اما کمتر از پنج) با استفاده از PWM تولید می شوند، یعنی این نوسانات ولتاژ سریع هستند، خود مدولاتور عرض پالس در فرکانس خاصی کار می کند، و همانطور که می دانید ترانزیستورها نیز می توانند کار کنند. در فرکانس های ثابت، بنابراین این پالس ها از طریق ترانزیستور به کولر منتقل می شود و به دلیل معماری آن، شروع به جیرجیر می کند. من وارد جزئیات نمی شوم، زیرا من خودم آنها را نمی شناسم، اما همه اینها با چسباندن یک مجرای 100 mF به علاوه به پایه و موارد منفی به امیتر این ترانزیستور درمان می شود. ولتاژ در آنجا به ترتیب تا 5 ولت است، مجرا را می توان حداقل 6.3 ولت تنظیم کرد. همین، جیرجیر از بین می رود و کلی مزخرف می شود!

    تعداد کنتاکت PWM که توسط آن کولر کنترل می شود با پارامتر زیر تنظیم می شود:

    // خروجی کنترل فن
    fanPin بایت = 6;

    سرعت آن از صفر (0 ولت) تا 255 (5 ولت) با توجه به سطوح توان توسط آرایه زیر تنظیم می شود:

    // تنظیمات سرعت فن
    بایت fanSpeeds=(0,0,80,90,100,110,120,180,255);

    و وظیفه این سرعت ها در رویه های افزایش و کاهش توان نوشته شده است:

    analogWrite (fanPin، fanSpeeds)؛

    در اینجا، به هر حال، یک رله با یک خنک کننده نزدیکتر است:

    کار بیشتر روی پانل جلویی

    اما بیایید جلوتر برویم. در اینجا من قبلاً در مورد جدید فیوز را در جای خود امتحان کردم - فیوز قدیمی ظاهراً چندین ولتاژ داشت ، اگرچه در واقع فقط یک ولتاژ استفاده شده بود و یک قطعه از آن جدا شده بود و این یکی مانند نو است ، برای 220 ولت ، از سهام پدرم. خب همون ال ای دی پایینی نصب شد و روی همون چسب چسبوند.

    بالاخره نوبت به مونتاژ و تعویض پنل جلو می رسد! همانطور که می بینید، تمام سیم ها از قبل لحیم شده اند، حتی یک KRENka پنج ولتی در پایین قاب بیرون زده است، فاصله دهنده ها به داخل جعبه پیچ می شوند تا پانل را کمی جابجا کند (من قبلاً در مورد این صحبت کردم)، زیرا قبل از آن نزدیک به پرونده متصل شد. همانطور که می بینید، در بسیاری از جاها من سیم ها را در داخل کامبریک قرار دادم تا چیزی ساییده یا کوتاه نشود. 12 ولت به کرنکا مستقیماً از پل دیودی می آید، با سیمی از کلاس بالاتر از یک سیم ساده. جفت پیچ خورده. منهای مستقیماً به منفی مشترک وصل می شود، اما مثبت آن از طریق یک دیود است، وگرنه واسیا پوپکین هنگام اتصال باتری قطبیت را معکوس می کند و تمام، فینیتا لا کمدی، نیمی از اجزای سوخته را دوباره لحیم می کند! و بنابراین شما می توانید آرام باشید.

    بعد از اینکه چند بار فهمیدم که سیم‌ها چگونه بین کیس و پانل قرار می‌گیرند - تصمیم گرفتم آنها را در مکان‌های مناسب بچسبانم تا آویزان نشوند و مزاحم نشوند، با اشیاء بداهه به سمت بالا فشار دادم و محکم کردم. با گیره لباس و یک شب آن را بگذارید تا چسب خشک شود:

    نصب کنترلر Atmega328P با تسمه و سایر عناصر

    در این زمان، در نیمه یکی از همان تخته های مدار، من قبلاً سهم شیر از اجزای باقی مانده را نصب کرده بودم - یک سوکت برای ریزمدار، کوارتز، مجراها، یک ترانزیستور برای خنک کننده و غیره. و غیره.:

    خود تخته باید از یک طرف بریده می شد - خیلی بزرگ بود و مناسب نبود. قسمت پایین و سپس کل قسمت را با چسب کاغذی پیچیدم تا در حین کار چیزی را اتصال کوتاه نکند.

    در آن زمان، پانل جلو در نهایت در محل افتخار خود نصب شده بود، و KRENka پنج ولتی از طریق یک واشر عایق رسانای گرما و یک درج پلاستیکی برای پیچ به قاب پشت پانل پیچ شد - به لطف این ، ریز مدار به طور قابل اعتمادی از طریق محفظه فلزی عظیم خنک می شود، بدون اینکه از طریق برق به آن متصل شود.

    تنظیم نهایی پارامترهای دستگاه

    در اینجا می توانید نحوه عملکرد سیستم نیمه مونتاژ شده را مشاهده کنید، اما باز هم تا کنون فقط از منبع تغذیه فاصله دارد، زیرا در طراحی من سوکت برای روشن کردن باتری در آخرین لحظه وصل می شود. خوب، اتفاقی افتاده، چه باید کرد ...

    پس از روشن کردن آن، مشخص شد که در جریان بالا، هنگامی که آمپرمتر از مقیاس خارج می شود، شارژر ولتاژ 0.5-0.8 ولتی را بیشتر از آنچه در حال حاضر روی باتری است می بیند. آزمایش نشان داد که به اندازه نیم ولت روی سیم‌ها هدر رفته است، بنابراین آنها را با سیم‌های بهتر با بخش بزرگ‌تر جایگزین کردم و آنها را به یک دوشاخه خنک لحیم کردم که برای طراحی کلی دستگاه بسیار مناسب بود. این مشکل را حل کرد، اما نه 100 درصد - در جریان های بالا، مقداری تفاوت هنوز باقی مانده است. اما من فکر کردم که این یک اشکال نیست، بلکه یک ویژگی است، زیرا چیزی برای شارژ باتری با چنین جریان های بزرگ وجود ندارد - بگذارید به عنوان یک عامل محدود کننده عمل کند!

    اینجا اتفاقا شارژ باطری پدرم به شدت در حال انجام است، این را می توان روی آمپرمتر دید. درست است ، لامپ 220 ولت کاملاً کم نور است و در عکس هایی که روشن است تقریباً نامرئی است. اما می سوزد، به من اعتماد کن!

    شارژر آماده است!

    در اینجا نمای پایین دستگاه را مشاهده می کنید. در ابتدا، من قصد داشتم تمام این شکاف بین کیس و پانل را ببندم، اما بعد نظرم تغییر کرد - بهتر است اجازه دهید تهویه شود!

    نمای از سمت چپ. خوب، یا از سمت راست - بستگی به ظاهر شما دارد، برای جناس متاسفم.

    خوب، آن بالا است. در اینجا می بینید که من پانل را به قسمت بیرون زده آمپرمتر چسباندم - معلوم شد که یک تکیه گاه بزرگ سوم است، در غیر این صورت پانل به نحوی نامطمئن نشسته است. و بنابراین همه چیز آسیب دیده، قابل اعتماد و زیبا است! به هر حال، تصور کنید اگر به جای کریستال از لحظه معمولی استفاده می کردم، و از طریق شکاف می توانید تمام این مزخرفات زرد روشن را ببینید. فووووو! 😳

    و البته نمای پشت. روی فن، یک گریل زیبا بستم که از انگشتان و سایر اندام های افراد و حیوانات در برابر آسیب محافظت می کند. و در اینجا می توانید یک کابل برق جدید را نیز مشاهده کنید که پس از شارژ به راحتی روی کولر پیچ می شود و کسی را آزار نمی دهد!

    ضمناً بعد از مونتاژ و تست دستگاه مجبور شدم دوباره آن را جدا کنم تا این کولر لعنتی را روغن کاری کنم، چرا بلافاصله آن را روغن کاری نکردم، آیا چنین ایده ای وجود داشت؟

    در اینجا اولین پروژه من در مورد یک میکروکنترلر قابل برنامه ریزی است. من تقریباً یک ماه وقت گذاشتم که عصرها روی آن کار کنم. من حتی یک هفته استراحت کردم، چون حوصله ام سر رفته بود، این کار خیلی کسل کننده است یا چیز دیگری. اما من راضی هستم. از این تجربه خوشحالم، خوشحالم که توانستم این کار را انجام دهم، خوشحالم که اکنون یک شارژر خودکار عالی با وصل کردن و فراموش کردن دارم. و خوشحالم که وقتی دوستان یا آشنایانم می پرسند شارژر باطری شان دارم یا نه، آن را به دستشان می دهم و با افتخار می گویم این کار باحال را من درست کردم!



    القای مغناطیسی فناوری است که احتمالاً از کلاس های فیزیک دبیرستان به یاد دارید. برای انتقال برق به صورت بی سیم، به دو سیم پیچ نیاز دارید: یک سیم پیچ فرستنده و یک سیم پیچ گیرنده. جریان متناوب در سیم پیچ فرستنده یک میدان مغناطیسی ایجاد می کند که باعث القای ولتاژ در سیم پیچ گیرنده می شود. از این ولتاژ می توان برای تغذیه استفاده کرد دستگاه موبایلیا برای شارژ باتری


    نه کمتر از عناصر مهمسلف هایی وجود خواهد داشت که می توانید با دستان خود بسازید. این کویل های ساده با سیم های مسی پیچیده می شوند و به آنها کویل های هسته هوا می گویند. ایجاد چنین سیم پیچی برای هدف ما کار بسیار ساده ای است. یک استوانه گرد به قطر حدود 5 سانتی متر پیدا کنید و سیم را به دور آن بپیچید تا هر پیچ روی پیچ دیگر همپوشانی نداشته باشد و در عین حال تا حد امکان به پیچ دیگر نزدیک شود. سیلندر گرد می تواند، به عنوان مثال، یک لوله PVC باشد. ممکن است لازم باشد در ۲ تا ۳ مکان از نوار چسب یا نوار چسب استفاده کنید تا ساختار پایدار بماند.


    علاوه بر آردوینو و سلف‌ها، به: یک ترانزیستور 2N3055 NPN، یک پل دیود 1 آمپری (مجموعه دیود، آنها چهار سیم دارند)، یک LED، یک مقاومت 100 اهم، دو خازن 47 nF، یک باتری 9 ولتی نیاز داریم. قدرت آردوینو و ترجیحاً دو برد نمونه اولیه. نمودار اتصال قطعات برای ایجاد یک دستگاه انتقال داده بی سیم در شکل زیر نشان داده شده است.



    مدار را می توان با کد آردوینو ساده زیر تست کرد.


    void setup() (pinMode(13,OUTPUT)؛ ) void loop() (digitalWrite(13,HIGH); delay(0.5); digitalWrite(13,LOW); delay(0.5)؛ )

    با این حال، یک دستگاه انتقال انرژی بی سیم ساده را می توان بدون آردوینو ساخت. در اصل، ما فقط می توانیم از یک ترانزیستور 2N2222 استفاده کنیم. سرب پایه آن را به انتهای اول سیم پیچ و کلکتور را به انتهای دیگر سیم پیچ وصل کنید. ترمینال امیتر به باتری متصل است. در نتیجه، چنین ساخت و ساز ساده ممکن است شبیه به این باشد:




       از علاقه شما به سایت پروژه اطلاعات سپاسگزاریم.
       اگر میخواهید جالب و مواد مفیدبیشتر منتشر می شد، و تبلیغات کمتری وجود داشت،
       شما می توانید با اهدای هر مبلغی از پروژه ما برای توسعه آن حمایت کنید.