Sunday, August 31, 2014

ტაშით გააქტიურებადი განათება

download.jpg
პროექტი LC (Light Control), ჩემი აზრით არის ძალიან მაგარი, ვისაც სურს, რომ უბრალოდ ტაშით გააკონტროლოს ოთახში შუქი - აანთოს ან ჩააქროს. ამ ყველაფრის განხორციელება კი მომიწია რელეს გამოყენების გარეშე, რადგან უბრალოდ არ მქონდა, და გადავწყვიტე ჩემს ხელთ არსებული რესურსებით გამეკეთებინა ეს.

თავიდან დავიწყე შუქის მექანიკური ჩამრთველის დაშლით, ამ შემთხვევაში ფრთხილად იყავით, რადგან დენის დარტყმისგან არ ხართ დაცული. კარგი იქნება თუ კვებას ოთახში ან სახლში მაინც გათიშავთ, ცოტა ხნით მაინც, სანამ ამ საქმეს აკეთებთ. ჩემს შემთხვევაში ჩემი ჩამრთველი ისე გამოიყურება, როგორც ქვემოთ მოცემულ სურათზეა წარმოდგენილი

sc1.png
სურათზე მოცემული დეტალი არის 90 გრადუსით ამოტრიალებული. წითელი ხაზი, წარმოადგენს ღერძზე მიმაგრებულ გამტარს, რომელიც მცირეოდენი ბიძგის დროსაც კი იცვლის მდგომარეობას. და ერთმანეთთან აკავშრებს პირველ და მეორე სადენს, რომლებიც მართკუთხედების ადგილას არიან შეერთებული. თუ წითელი ღერძის ზემოთ დავამატებთ პატარა ელ. ძრავას, რომელსაც არაგამტარი ექნება და იმოძრავებს ძრავის ბრუნვისას, მაშინ შეგვეძლება წითელი ღერძის - წრედის შეკვრის კონტროლი.
sc1.png
ეს ელ. ძრავა კი შეგიძლიათ იპოვოთ ამ ლინკზე. ქვემოთ მოცემულია ამ ყველაფრის რეალიზაციის სურათი
IMG_20140831_181649.jpg
ამ ყველაფრის განხორციელების შემდეგ უკვე ყველაფერი გაცილებით მარტივია. საჭიროა ხმის დაფიქსირება და მიკრო კონტროლერის ისე დაპროგრამება, რომ ხმაზე მან მოახდინოს რეაგირება. მიკროფონის სიგნალის გამაძლიერებლის აწყობა შეგიძლიათ ჩემი ძველი პლოგის ერთ-ერთი ტუტორიალის გამოყენებით.

მიკროფონის გამაძლიერებლის აწყობის შემდეგ, დაგჭირდებათ პროგრამა, რომელიც იქნება მაქსიმალურად დამოუკიდებელი და მარტივი. ექსპერიმენტებზე დაყრდნობით შემიძლია ვთქვა, რომ მომიხდა ავტომატური კალიბრაციის ფუნქციის დაწერა მიკროფონიდან წამოსული სიგნალისთვის, რადგან სხვადასხვა ძაბვაზე მუშაობისას მიკროფონიდან წამოსული ძაბვდა სხვადასხვანაირად იცვლება. მოკლედ ფუნქცია AutoCalib(), უზრუნველყოფს იმას, რომ ტაშის დაკვრის დროს გამაძლიერებლის გამოსასვლელ პინზე სიგნალი / ძაბვა მკვეთრად იცვლება. რადგან ეს ვიცით და გვაქვს უპირატესობა ეს ყველაფერი პროგრამაში უნდა გამოვიყენოთ, ამიტომ ფუნქციის გამოძახების დროს ფუნქცია კითხულობს ანალოგურ პინს და გლობალურ ცვლადებში (Min & Max) აახლებს ინფორმაციას წაკითხულ ძაბვაზე დაყრდნობით. თუ წაკითხული ძაბვა ნაკლებია მინიმალურ მნიშვნელობაზე, მაშინ პროგრამა იმახსოვრებს ამ მნიშვნველობას. იგივე პრინციპით ხდება მაქსიმალური მნიშვნელობის განახლებაც.

მთავარ პროგრამაში, რომელიც loop შია მოთავსებული, 5 წამის განმავლობაში ხდება მაქსიმალური და მინიმალური მნიშვნელობის განახლება. სწორედ ამ დროს საჭიროა, რომ დაუკრათ ტაში 1 / 2-ჯერ და პროგრამა დაახლოებით “გაიგებს” როდის უნდა ჩართოს სინათლე და როდის გამორთოს. ამის შემდეგ, როდესაც უკვე მონაცემები დამახსოვრებულია ხდება LightControl() ფუნქციის მოქმედების დრო, როდესაც პროგრამა გამუდმებით ამოწმებს ანალოგურ პინს - გამაძლიერებიდან გამოსულ სიგნალს, რომელსაც მიკროფონიდან ვაძლიერებთ. როდესაც ტაშს დავუკრავთ, სიგნალი დაახლოებით ისე იცვლება, როგორც მონაცემების ჩაწერის დროს და სწორედ ამ დროს მიკრო კონტროლერმა უკვე “იცის”, რომ რაღაც ტაშის დაკვრის მაგვარი მოხდა, ამიტომ საჭიროა მოქმედება. ქვემოთ კი არის ვიდეო, რომელიც ამ ყველაფერს ასახავს მოქმედებაში


რაც შეეხება პროგრამულ კოდს, გთავაზობთ არდუინოს ვერსიას, რომელიც არ იყენებს პირდაპირ რეგისტრებით მანიპულაციას. ხოლო რაც შეეხება იმ ვერსიას, რომელიც გამოიყენებს რეგისტრების პირადაპირ მანიპულაციას და მთელ "ამბავს" ავტვირთავ დატესტვის შემდეგ.

ეს პროექტი რა თქმა უნდა აქ ვერ გაჩერდება და საჭიროა, რომ უფრო დაიხვეწოს.პროგრამა. ვფიქრობ კარგი იქნება რაიმე უკუკავშირის სახით დამატებითი სენსორის დამატება, რომ სინათლის ანთება და ჩაქრობა უფრო ოპტიმალური იყოს. ასევე ვაპირებ, რომ პროცესორი დავუკავშირო ინფრაწითელ სენსორს, რომელიც ადამიანის ოთახში შემოსვლის თანავე და სინათლის სენსორიდან მიღებულ ინფორმაციაზე დაყრდნობით გადაწყვეტს აანთოს თუ არა სინათლე.

No comments:

Post a Comment