مطالب وبلاگ

Arduino CDROM BLDC Motor Driver, Enhanced Performance

In the last BLDC project “Run-A-CDROM-Brushless-Motor-With-Arduino” I’ve used a L293 to drive a brushless DC motor. There were two important problems in that project as follow:
- Low speed and torque of the motor due to minimal signaling.
- IC overheating due to signal feedback.

arduino schematic

In this project I solve these problems via additional L293 and corresponding hi impedance state. According to grand Wikipedia, Hi-Z (or High-Z or high impedance) refers to an output signal state in which the signal is not being driven. The signal is left open, so that another output pin (e.g. elsewhere on a bus) can drive the signal or the signal level can be determined by a passive device.
(ادامه مطلب…)


بهینه‌سازی در AS3: پاسخدهی به رویدادها

اصولاً، AS3.0 یکی از زبان‌هایی است که تفاوت زیادی میان برنامه‌نویسان عادی و با تجربه، قائل می‌شود. چگونه؟ با کاهش کارایی!… چرا؟ از پدرش java به ارث برده است!

به دلیل شباهت زیادی که در ساختار این زبان با java وجود دارد، برنامه‌نویسان AS3.0 به مرور زمان، تمایل زیادی به برنامه‌نویسی ساخت یافته و لایه‌بندی شده پیدا می‌کنند. شئ‌گرایی بی حد و مرز باعث می‌شود که مفاهیم مخفی‌سازی (بخوانید Encapsulation) در تمام اجزای برنامه به وضوح دیده شود. تعریف انواع و اقسام Interface ها، کلاس‌های ایستا و پویا، ارث‌بری و اشیاء متنوع، به خودی خود، سبک برنامه‌نویسیان AS3.0 را به طراحی لایه‌های مستقل نزدیک می‌کند.

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

استفاده زیاد از الگوهای طراحی مانند Singleton برای بهینه‌سازی مصرف حافظه (هرچند که هدف اصلی آن نبوده است) و Proxy یا Facade جهت ساده‌سازی روابط بین کلاس‌ها و اشیاء در محیط‌های ManagedCode مانند Flash، گویای این مسئله است که گاهی، پس از طراحی منطقی کلاس‌ها و سازماندهی لایه‌ها، به میزان کمی از بی‌نظمی با هدف افزایش کارایی نیازمندیم.

از این پس، سعی می‌کنم در سلسله پست‌های بهینه‌سازی در کارایی، به طرح مواردی مانند نکات برنامه‌نویسی بهینه و حتی الگوهای طراحی سودمند در این رابطه بپردازم.

flash_logo

در این مطلب به یکی از مهمترین منابع کاهش کارایی که همان EventHandler ها هستند پرداخته می‌شود.

در زبان AS3.0، قدرت شئ‌گرایی java به همراه قدرت پردازش بصری محصولات شرکت Adobe در یک جا جمع می‌شوند.
نتیجه این می‌شود که کلیه ترسیمات و اشکال گرافیکی را به سادگی، در قالب اشیاء تعاملی (Interactive Objects) تعریف نموده و بارها از آنها استفاده می‌کنیم. تعریف ساده انواع کامپاننت‌های گرافیکی داده‌ای مانند List، Grid و Combo همگی از این دست هستند.

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

(ادامه مطلب…)


Run A CDROM Brushless Motor With Arduino

A brushless dc motor or BLDC is a type of motor without any brush. It means that there is no direct connection (brush) between rotating spindle and other fixed parts like as coil. So the spinning is yield of changes in current direction of coil.
The spindle has a circular magnet (usually). And the coil is an electric controlled magnet itself. So by changing the poles of coil, you can turn the spindle.

Have you ever seen a BLDC? Yes, of course. There are many of them in every computer case.

Fan, CDROM and also Floppy drive (if you have yet) are devices that use BLDC. The fans usually use 2 phase motors with 2 pins for coil and 1 pin for Hall sensor.
CDROM or Floppy drive has 3 phase motor, with 3 pins for coil and 1 pin for Hall sensor.

The mentioned Hall, is a simple sensor to detect the current magnet pole of the spindle. Whenever a magnet reaches, it generates a signal. So you can use this pin to detect rounds of motor and also you can control the motor speed (RPM) by altering the signal speed according to this pin.

I thinks it’s enough of theory, let’s make!

(ادامه مطلب…)


استفاده از تاریخ هجری در ActionScript 3.0

یکی از بسته‌های بسیار مفیدی که با انتشار Adobe Flash Player 10.1 ارائه شد، مجمموعه کلاس‌های flash.globalization هستند که حاوی امکانات مختلفی جهت محلی سازی متون، تاریخ، اعداد و غیره می‌باشند.

کلاس DateTimeFormatter در این مجموعه دارای قابلیت تغییر قالب تاریخ جاری سیستم به قالبهای میلادی، هجری و ژاپنی می‌باشد. برای انجام این کار، کافیست که یک نمونه از این کلاس ایجاد کرده و یک شئ از نوع Date را به تابع format آن ارسال کنیم:

import flash.globalization.DateTimeFormatter;

var dt:Date = new Date();
var dtf:DateTimeFormatter = new DateTimeFormatter("ar-SA");
trace(dtf.format(dt));

و یا نمونه ساده تر آن در یک خط:

trace( (new DateTimeFormatter("ar-SA@calendar=islamic")).format(new Date) );

معرفی کتاب: اصول برنامه نویسی ActionScript 3.0 در نرم‌افزار Flash

تکنولوژی Flash از زمای که توسط شرکت Macromedia در سال 1996 معرفی شد، همواره جزء فناوری‌های پیشتاز در عرصه نرم‌افزار بوده است. عمومیت یافتن قالب فایل swf و انیمیشن‌های برداری (Vector) در سال‌های 1998 که به نوعی آغاز پیشرفت اینترنت محسوب می‌شد، تحول بسیار بزرگی در جلوه‌های بصری نرم‌افزاری به وجود آورد.

shams as3 book

کیفیت بالا و حجم کم انیمیشن‌های فلش، شرایط ایده‌آلی را جهت انتشار آثار گرافیکی در اینترنت فرهم نموده و بدون شک زیبایی بصری web در دوران حاضر تا حد زیادی مدیون تکنولوژی‌های پیشتازی همچون flash است که در گذشته راه پیشرفت آن را هموار نموده‌اند. البته امروزه کاربرد این تکنولوژی، تنها به انیمیشن‌های web محدود نیست بلکه با پیدایش مفاهیم RIA و معرفی تکنولوژی AIR توسط شرکت Adobe به عنوان یکی از مدعیان تولید نرم‌افزارهای Rich Internet Application، اهمیت بستر Flash در نرم‌افزارهای کاربردی نیز تا حد زیادی مشخص شده است.
در کنار امکانات طراحی و بصری فلش، زبان کدنویسی مورد استفاده در آن نیز از اهمیت بسیار بالایی برخوردار است. زبان ActionScript از گذشته تا کنون تغییرات زیادی نموده و تلفیق دانش و تجربه دو شرکت قدرتمند Macromedia و Adobe در توانایی و امکانات آن کاملاً مشهود است. اهمیت تسلط در زبان AS3 تا این حد است که می‌توان آن را کلید ورود به دنیای Flash Platform معرفی نمود.

کتاب حاضر مجموعه‌ای از سال‌ها تجربه مؤلف در طراحی نرم‌افزارهای مبتنی بر بستر فلش است که به صورت یک مرجع خودآموز برای زبان ActionScript 3.0 آماده شده است.

جهت مشاهده فهرست کتاب به این قسمت مراجعه کنید.


  • بایگانی:

  • کاربران:



  • RSS اشتراک‌ها:

  • .
    Copyright (c) 2010 www.mshams.ir