اندروید یک سیستم عامل open-source (منبع باز) است و بنابراین علاوه بر نسخه‌ای که گوگل در اختیار عموم قرار می‌دهد، میلیون‌ها نوع دیگر از آن نیز در حال شکوفایی هستند. اگر دستگاه اندرویدی شما توسط گوگل تایید شده است، شما اجازه دارید تا برنامه‌های اندروید مثل Play Store, Maps و غیره را توسعه دهید. اما اگر شما تاییده نشده‌اید،(نمونه های رایج مانند تبلت Fire OS آمازون و همچنین اکثر تلفن های چینی که در چین فروخته می شود) شما مجاز به این کار نیستید. اما خوب برخی از تولید کنندگان غیر معتبر نیز هستند که این کار را انجام می‌دهند.

    گوگل اکنون در حال چک کردن تاریخ ساخت سیستم اندرویدی شما از وقتی که برنامه‌های گوگل را اجرا می‌کنید است. اگر شما یک دستگاه تاییده نشده داشته باشید و در حالی که یک نسخه از سیستم عامل اندروید را در آن اجرا می‌کنید که پس از شانزدهم مارس سال ۲۰۱۸ ساخته شده است، برنامه‌های گوگل در آن کار نخواهد کرد.

    خوشبختانه یک راه حل برای کاربران ROM دستی که مایل به دانلود یک نسخه‌ی سفارشی از اندروید مطابق با سلیقه‌ی خود هستند، وجود دارد. شما اکنون می‌توانید دستگاه خود را با Android ID که به برنامه‌های گوگل اجازه‌ی اجرا می‌دهد، ثبت نام کنید. به ازای هر کاربر ۱۰۰ دستگاه وجود دارد که ممکن است برای کاربران پر استفاده مشکل ایجاد کند اما امیدواریم که برای عموم افراد مفید باشد.

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

    کنترل GPIO های رزبری‌پای از طریق تلگرام، تلگرام اپلیکیشنی ایده‌آل برای ترکیب شدن  با برد رزبری‌پای و پیاده‌سازی پروژه‌های کنترل با موبایل است.

    کنترل GPIO های رزبری‌پای از طریق تلگرام

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

    اکنون در این آموزش قصد داریم یک قدم فراتر رفته و بیاموزیم که چگونه می‌توان پین‌های GPIO یک برد رزبری‌پای را از طریق تلگرام کنترل کرد. ( به این ترتیب برای بات تلگرامی یک پشتیبانی سخت‌افزاری ایجاد کرده‌ایم.)

    پروژه قبلی با تلگرام

    در واقع می خواهیم چهار  LED به پین های GPIO رزبری‌پای وصل کنیم و آن‌ها را از طریق چت کردن با تلگرام، روشن و خاموش کنیم! یک تجربه ‌ی هیجان انگیز ! بیایید شروع کنیم.

    ابزار مورد نیاز :

    ۱ . چهار LED ( با رنگ دلخواه)

    1. برد رزبری‌پای ( دارای اتصال اینترنت)
    2. برد بورد
    3. سیم برد بوردی

    پیش‌نیازها:

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

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

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

    طراحی مداری GPIO های رزبری‌پای

    مدار مورد نیاز برای کنترل LED ها از طریق بات تلگرام، یک مدار ساده است که از چهار LED و تعدادی سیم رابط تشکیل می‌شود. به مقاومت‌های محدود کننده جریان نیز احتیاجی نخواهیم داشت، چرا که پین‌های GPIO رزبری‌پای با سطح ولتاژ ۳٫۳ ولت TTL کار می‌کنند.

    مدار را مطابق تصویرهای زیر بسازید.

    جدول زیر راهنمای پین‌ها برای اتصال هر LED  است.

    کنترل GPIO های رزبری‌پای از طریق تلگرام

    و تصویر بعدی نمای کلی مدار است که در آن LED ها مطابق جدول بالا به برد متصل شده اند.

    کنترل GPIO های رزبری‌پای از طریق تلگرام

    و در نهایت مدار کامل شده شما باید مشابه تصویر زیر باشد:

    کنترل GPIO های رزبری‌پای از طریق تلگرام

    برنامه پایتون برد رزبری‌پای

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

    بنابراین برنامه ما باید دو کلیدواژه را چک کند؛ ON و OFF

    به محض مشاهده و دریافت هر یک از این دو کلمه، به جستجوی کلمات دیگری نظیر white, yellow, green  و  redمی پردازد. هر کدام از این رنگ‌ها که وجود داشته باشند، LED متناظر تغییر وضعیت خواهد داد. هم‌چنین در پاسخ، یک رشته از وضعیت آپدیت شد‌ه‌ی روشن و خاموش بودن LED ها را نیز به بات تلگرام ارسال می‌کنیم.

    کد کامل برنامه را می‌توانید در انتهای این آموزش ببینید. اما در ادامه قسمت‌های مختلف آن را به طور جداگانه توضیح می‌دهیم تا فهم برنامه‌ی کلی آسان گردد.

    در این برنامه هم، همچون برنامه‌ی آموزش قبلی، ما به تابع telepot نیاز داریم و باید آن را دانلود و فراخوانی کنیم. روش این کار دقیقا مانند روشی است که در آموزش قبلی توضیح دادیم. کتابخانه‌ی مربوط به GPIO را نیز باید فراخوانی کنیم.

    کنترل GPIO های رزبری‌پای از طریق تلگرام

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

    کنترل GPIO های رزبری‌پای از طریق تلگرام

    قدم بعدی این است که هر کدام از این پین‌های متصل به LED ها را به عنوان پین خروجی تعریف کنیم و حالت پیش فرض آن‌ها را روی وضعیت خاموش (turned off) قرار دهیم.

    کنترل GPIO های رزبری‌پای از طریق تلگرام

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

    هر پیامی که از طریق بات ارسال می‌شود دارای یک chat id و یک command است. اهمیت chat id از این نظر است که برنامه به واسطه‌ی همین id می‌تواند پاسخ پیام دریافتی را برای فرستنده ارسال کند. هر دوی این اطلاعات یعنی chat id و command را به ترتیب زیر ذخیره می‌کنیم.

    کنترل GPIO های رزبری‌پای از طریق تلگرام

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

    کنترل GPIO های رزبری‌پای از طریق تلگرام

    به همین ترتیب تمام کلیدواژه ها را بررسی میکنیم. اگر در پیامی کلید‌واژه ‌ی on را دیدیم، آنگاه جستجو می‌کنیم که کاربر کدام LED را مد نظر داشته است. کد لازم این بررسی نیز همان کد یک خطی خواهد بود.

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

    کنترل GPIO های رزبری‌پای از طریق تلگرام

    همان‌طور که در قطعه کد بالا می‌بینید، ما به دنبال کلیدواژه های مانند green’, ‘white’, ‘red’, ‘yellow’ ‘all’  و ‘Turned on’ هستیم که در مورد LED به خصوصی باشد. پس از اتمام این جستجو، پیغامی به فرستنده ارسال می‌کنیم که نتیجه‌ی درخواست او چه بوده است. همین روش را برای خاموش کردن LED ها نیز می‌توانیم استفاده کنیم.

    کنترل GPIO های رزبری‌پای از طریق تلگرام

    مرحله نهایی کنترل LED ها با بردرزبری‌پای و بات تلگرام

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

    حال شروع کنید و دستوراتی که میخواهید را از طریق ربات ارسال کنید. به عنوان مثال برای روشن کردن LED های زرد و قرمز ، می‌توانید یکی از دستورات زیر را وارد کنید:

    ۱٫Turn on Red and Yellow Light

    ۲٫Switch on Red and Yellow colour right

    ۳٫On red and yellow

    ۴٫Please put on the yellow and red light

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

    کنترل GPIO های رزبری‌پای از طریق تلگرام

    کنترل GPIO های رزبری‌پای از طریق تلگرام

    این پروژه را انجام دهید و لذت ببرید! حتی می‌توانید آن را به سطوح پیشرفته‌تری نیز ارتقا دهید. با کمک آموزش‌های داده شده در این دو جلسه، شما می‌توانید از طریق تلفن همراه خود در هرکجای دنیا، هر سخت‌افزاری را تحت کنترل خود داشته باشید و از طریق رزبری‌پای برای آن پیام‌های صوتی، تصویری، متنی و فایلی فرستاده و پاسخ دریافت کنید! اگر LED ها را با رله یا دستگاه‌های AC جایگزین کنید، آنگاه یک سیستم اتوماتیک خانگیِ قابل کنترل با گوشی های هوشمند خواهید داشت! بنابراین از خلاقیت به خرج دهید و پروژه‌ی منحصر به خودتان را خلق کنید!

    امیدواریم که این آموزش را دوست داشته و از انجام آن لذت برده باشید. هر گونه نظر، پیشنهاد و ایده و یا سوالی در ارتباط با این پروژه را با ما در میان بگذارید.

    ویدئوعملکرد کنترل GPIO های رزبری‌پای از طریق تلگرام

    کد:

    import time, datetime
    import RPi.GPIO as GPIO
    import telepot
    from telepot.loop import MessageLoop
    
    white = 26
    yellow = 19
    red = 13
    green = 6
    
    now = datetime.datetime.now()
    GPIO.setmode(GPIO.BCM)
    GPIO.setwarnings(False)
     
     
    #LED White
    GPIO.setup(white, GPIO.OUT)
    GPIO.output(white, 0) #Off initially
    #LED Yellow
    GPIO.setup(yellow, GPIO.OUT)
    GPIO.output(yellow, 0) #Off initially
     #LED Red
    GPIO.setup(red, GPIO.OUT)
    GPIO.output(red, 0) #Off initially
    #LED green
    GPIO.setup(green, GPIO.OUT)
    GPIO.output(green, 0) #Off initially
    
    def action(msg):
     chat_id = msg['chat']['id']
     command = msg['text']
    
    print 'Received: %s' % command
    
    if 'on' in command:
     message = "Turned on "
     if 'white' in command:
     message = message + "white "
     GPIO.output(white, 1)
     if 'yellow' in command:
     message = message + "yellow "
     GPIO.output(yellow, 1)
     if 'red' in command:
     message = message + "red "
     GPIO.output(red, 1)
     if 'green' in command:
     message = message + "green "
     GPIO.output(green, 1)
     if 'all' in command:
     message = message + "all "
     GPIO.output(white, 1)
     GPIO.output(yellow, 1)
     GPIO.output(red, 1)
     GPIO.output(green, 1)
     message = message + "light(s)"
     telegram_bot.sendMessage (chat_id, message)
    
    if 'off' in command:
     message = "Turned off "
     if 'white' in command:
     message = message + "white "
     GPIO.output(white, 0)
     if 'yellow' in command:
     message = message + "yellow "
     GPIO.output(yellow, 0)
     if 'red' in command:
     message = message + "red "
     GPIO.output(red, 0)
     if 'green' in command:
     message = message + "green "
     GPIO.output(green, 0)
     if 'all' in command:
     message = message + "all "
     GPIO.output(white, 0)
     GPIO.output(yellow, 0)
     GPIO.output(red, 0)
     GPIO.output(green, 0)
     message = message + "light(s)"
     telegram_bot.sendMessage (chat_id, message)
    
    telegram_bot = telepot.Bot('470583174:AAG7MPZc93qchp-tjqA_K2meRYcQiOR7X7Y')
    print (telegram_bot.getMe())
    
    MessageLoop(telegram_bot, action).run_as_thread()
    print 'Up and Running....'
    
    while 1:
     time.sleep(10)

    منبع و رفع مسئولیت: CircuitDigest



    گوگل اعلام کرده است که سرویس کوتاه کننده‌ی یو آر ال خود یعنی goo.gl را غیر فعال خواهد کرد. این شرکت می‌گوید که از سیزدهم آوریل کاربران جدید و ناشناس قادر نخواهند بود تا از طریق goo.gl لینک‌های کوتاه بسازند اما کاربران فعلی برای یک سال دیگر و تا زمانی که این سرویس کاملا از رده خارج شود نیز می‌توانند از این سرویس استفاده کنند.

    مایکل هرمانتو (Michael Hermanto) مهندس نرم افزار Firebase می‌گوید که این شرکت سرویس کوتاه کننده‌ی یو آر ال خود را در سال ۲۰۰۹ معرفی کرد و از آن زمان و با افزایش محبوبیت این سرویس، روشی که مردم اطلاعات را در اینترنت منتشر می‌کردند تغییر کرد. او اشاره کرد که گوگل در حال تلاش برای جایگزین کردن (Firebase Dynamic Links (FDL است که به کاربران اجازه می‌دهد تا لینک هایشان را در اندروید، iOS یا دیگر برنامه‌ها، در مکان‌های خاصی هدایت کنند.

    کاربران فعلی قادر خواهند بود تا لینک‌های کوتاه‌شده‌ی خود را از goo.gl تا ۳۰ مارس سال ۲۰۱۹ دریافت کنند. بعد از این مدت لینک‌های کوتاه شده به جایگاه مورد نظر هدایت می‌شوند اما به کنسول جدیدی از Firebase منتقل نخواهد شد.

    در این بخش در مورد تعدادی از توابع ورودی/خروجی پیشرفته آردوینو صحبت می کنیم.در ادامه با میکرو دیزاینر الکترونیک همراه باشید.

    توابع ورودی/خروجی پیشرفته آردوینو

    تابع analogReference

    این تابع ولتاژ مرجع مورد استفاده برای ورودی را تنظیم می کند (منظور از ولتاژ مرجع حداکثر ولتاژی است که به عنوان ولتاژ ورودی پایه آنالوگ در نظر گرفته می شود). تنظیمات این تابع عبارت اند از :

    • DEFAULT : ولتاژ مرجع پیش فرض که برابر ۵V می باشد (در بردهای آردوینو با تغذیه ۵V) و یا ۳V (در بردهای آردوینو با تغذیه ۳٫۳V)
    • INTERNAL : ولتاژ مرجع داخلی، برای بردهای دارای میکروهای ATmega168 و ATmega328 برابر ۱V و برای بردهای دارای میکروی ATmega8 برابر ۲٫۵۶V ( در بردهای Arduino Mega غیرفعال است)
    • INTERNAL1V1 : ولتاژ مرجع داخلی ۱V (فقط در بردهای Arduino Mega)
    • INTERNAL2V56 : ولتاژ مرجع داخلی ۵۶V (فقط در بردهای Arduino Mega)
    • EXTERNAL : ولتاژ اعمال شده به پایه AREF (فقط ۰V تا ۵V) به عنوان ولتاژ مرجع در نظر گرفته می شود.

    دستور نگارش تابع analogReference() :

    analogReference (type);

    type : فقط میتواند یکی از موارد زیر باشد :

    DEFAULT, INTERNAL, INTERNAL1V1, INTERNAL2V56, EXTERNAL

    توجه شود هرگز ولتاژی کمتر از ۰V یا ولتاژی بیشتر از ۵V به پایه AREF اعمال نکنید. اگر از ولتاژ خارجی به عنوان ولتاژ مرجع بر روی پایه AREF استفاده می کنید، باید قبل از فراخوانی تابع analogRead    ولتاژ مرجع را بر روی حالت EXTERNAL تنظیم کنید. در غیر اینصورت فراخوانی این تابع موجب اتصال کوتاه شدن ولتاژ مرجع داخلی و پایه AREF می شود و ممکن است موجب سوختن میکروکنترلر موجود بر روی برد آردوینو شود.

    ولتاژ مرجع داخلی و پایه AREF

    به عنوان یک روش دیگر میتوانید ولتاژ مرجع خارجی مورد نظر را توسط یک مقاومت ۵ کیلو اهم به پایه AREF متصل نمایید، در اینصورت میتوانید بین ولتاژ مرجع خارجی و ولتاژ مرجع داخلی تغییر حالت دهید.

    البته در این حالت توجه کنید که ولتاژ اعمال شده به عنوان ولتاژ مرجع تغییر خواهد کرد زیرا به صورت داخلی یک مقاومت ۳۲ کیلواهم بر روی پایه AREF وجود دارد و مقاومت خارجی  که متصل میکنیم به همراه این مقاومت یک تقسیم کننده ولتاژ را تشکیل می دهند. به عنوان مثال، اگر ۲٫۵V به پایه AREF اعمال نمایید، ولتاژ مرجع برابر است با :

    ۲٫۵ * ۳۲ / (۳۲ + ۵) = ~۲٫۲V

    مثال :

    int analogPin = 3;// potentiometer wiper (middle terminal) connected to analog pin 3 
    int val = 0; // variable to store the read value
    
    void setup() {
     Serial.begin(9600); // setup serial
     analogReference(EXTERNAL); // the voltage applied to the AREF pin (0 to 5V only) 
     // is used as the reference.
    }
    
    void loop() {
     val = analogRead(analogPin); // read the input pin
     Serial.println(val); // debug value
    }

     

    پایان جلسه،در جلسه بعدی توابع کاراکتر ها را برسی میکنیم.

    دیگر جلسات این آموزش


    الکسا

    توانایی دستیار‌صوتی Alexa در کنترل دستگاه‌های DVR در آینده‌ای نزدیک پیشرفت‌های چشم‌گیری خواهد‌داشت. شرکتAmazon امروز از بروزرسانی‌های جدید برای رابط‌کاربری‌برنامه‌نویسی(API) سیستم‌های ویدیویی Alexa عرضه‌ می‌کند، که بوسیله آن Alexa قادر خواهد‌بود تا ویدیو ضبط‌کند، اپلیکیشنی را راه‌اندازی کند و یا دستور بازپخش ویدیویی را انجام دهد. سازندگان این دستگاه چند‌کاره متعهد شده‌اند تا در بروزرسانی‌های بعدی قابلیت پشتیبانی از عملکرد‌هایی را مانند Dish، Verizon، TiVoو DirecTV به دستگاه‌های خود می‌افزایند. شرکت Amazon می‌گوید که برخی از این عملکردها قبلا تجربه شده‌اند. کاربران قادر به ارائه دستور‌هایی مانند ” Alexa، بازی تیم Cubs را ضبط کن.” و دستگاه شروع یه ضبط خواهد‌کرد. آن‌ها همچنین قادر خواهندبود تا به دستیار صوتی فرمان راه‌اندازی یک اپلیکیشن یا سرویس خاص را، بدهند؛ مثلا آن‌ها می‌توانند بگویند ” Alexa، برنامه Netflix را اجرا کن.”. همچنین کاربران با گفتن عبارت” Alexa، متوقف شو”، بدون نیاز به گفتن نام دستگاه خود، دستگاه را به حالت دستراحت بازگردانند. تعدادی از کاربران قبلا نیز از قادر به استفاده از این دستور‌های صوتی بوده‌اند، ولی حالا سازندگان این دستورات را بهبود بخشیده‌اند و ویژگی‌های جدیدی را به آن افزوده‌اند. حالا سایر سازندگان می توانند از این ویژگی به راحتی در محصولات خود استفاده کنند. حالا ما می‌توانیم حتی با فریاد زدن به Alexa دستور بدهیم، حتی اگر سازنده دستگاه ما نخواهد که کار اضافه‌ایی انجام دهند. در کل هر عملی که ارتباط با Alexa را آسان‌تر کند، برای من بسیار جالب است.

    مقاله قبلی گوگل سرویس کوتاه‌کننده‌ی لینک خود یعنی goo.gl را متوقف خواهد کرد


    آردوینو – توابع کاراکتری، همه اطلاعاتی که به کامپیوتر وارد می شود به صورت کاراکتری است که شامل حروف، اعداد و علائم و نمادهای میباشد. در این بخش، با توانایی های زبان ++C در کار کردن با کاراکترها آشنا می شویم.

    آردوینو – توابع کاراکتری

    کتابخانه های کار با کاراکترها شامل توابعی هستند که میتوانیم توسط آنها تغییرات مورد نظر را بر روی کاراکترها اعمال کنیم یا اطلاعات مورد نظر را از انها استخراج کنیم. هر تابع یک کاراکتر از نوع int یا EOF را به عنوان آرگومان می گیرد. عملیات بر روی کاراکترها معمولا به عنوان عدد صحیح انجام می شود.

    به خاطر داشته باشید که معمولا EOF معادل عدد -۱ است و برخی از سخت افزارها اجازه ذخیره سازی اعداد منفی را در متغیرهای char را نمی دهند. بنابراین  این توابع کاراکترها را به عنوان عدد صحیح در نظر می گیرند.

    جدول زیر خلاصه ای از توابع کار با کاراکترها را شامل می شود. اگر میخواهید از این توابع استفاده کنید در ابتدای برنامه فایل سرآمد <cctype> را به برنامه اضافه (include) کنید.

    شماره تعریف تابع و توضیحات
    ۱

    int isdigit( int c )

    در صورتی که c یک عدد باشد مقدار یک بازگردانده می شود، در غیراینصورت مقدار صفر بازگردانده می شود.

    ۲

    int isalpha( int c )

    در صورتی که c یک حرف باشد مقدار یک بازگردانده می شود، در غیراینصورت مقدار صفر بازگردانده می شود.

    ۳

    int isalnum( int c )

    در صورتی که c یک عدد یا حرف باشد مقدار یک بازگردانده می شود، در غیراینصورت مقدار صفر بازگردانده می شود.

    ۴

    int isxdigit( int c )

    در صورتی که c یک عدد در مبنای ۱۶ باشد مقدار یک بازگردانده می شود، در غیراینصورت مقدار صفر بازگردانده می شود.

    (برای مشاهده جزئیات سیستم های عددی در مبنای دو، هشت، ده و شانزده به پیوست D مراجعه شود)

    ۵

    int islower( int c )

    در صورتی که c یک حرف کوچک باشد مقدار یک بازگردانده می شود، در غیراینصورت مقدار صفر بازگردانده می شود.

    ۶

    int isupper( int c )

    در صورتی که c یک حرف بزرگ باشد مقدار یک بازگردانده می شود، در غیراینصورت مقدار صفر بازگردانده می شود.

    ۷

    int isspace( int c )

    در صورتی که c یکی از انواع کاراکترهای شامل خط جدید (‘n’)، فاصله (‘ ‘)، (‘f’)، (‘r’)،فاصله tab افقی  (‘t’) یا فاصله tab عمودی (‘v’)  باشد مقدار یک بازگردانده می شود، در غیراینصورت مقدار صفر بازگردانده می شود.

    ۸

    int iscntrl( int c )

    در صورتی که c یکی از انواع کاراکترهای کنترلی شامل خط جدید (‘n’)، (‘f’)، (‘r’)، فاصله tab افقی  (‘t’) ، فاصله tab عمودی (‘v’)، صدای هشدار (‘a’)، (‘b’) یا backspace باشد مقدار یک بازگردانده می شود، در غیراینصورت مقدار صفر بازگردانده می شود.

    ۹

    int ispunct( int c )

    در صورتی که c یک حرف قابل چاپ به غیر از فاصله، عدد یا حرف باشد مقدار یک بازگردانده می شود، در غیراینصورت مقدار صفر بازگردانده می شود.

    ۱۰

    int isprint( int c )

    در صورتی که c یک حرف شامل فاصله (‘ ‘)  باشد مقدار یک بازگردانده می شود، در غیراینصورت مقدار صفر بازگردانده می شود.

    ۱۱

    int isgraph( int c )

    در صورتی که c یک حرف به غیر از فاصله (‘ ‘)  باشد مقدار یک بازگردانده می شود، در غیراینصورت مقدار صفر بازگردانده می شود.

    مثال هایی از توابع کاراکتری :

    مثال پیش رو نحوه استفاده از توابع isdigit ، isalpha ، isalnum و isxdigit را نشان می دهد. تابع isdigit تعیین می کند که آیا ورودی آن یک عدد (۰–۹) می باشد یا خیر. تابع isalpha تعیین می کند که آیا ورودی آن یک حرف بزرگ (A-Z) می باشد یا یکی از حروف کوچک (a-z). تابع isalnum تعیین می کند که ورودی آن یک حرف بزرگ، حرف کوچک یا عدد است. تابع isxdigit تعیین می کند که آیا ورودی آن یک عدد در مبنای ۱۶ می باشد یا خیر. (A–F, a–f, 0–۹)

    مثال ۱ :

    void setup () {
     Serial.begin (9600);
     Serial.print ("According to isdigit:r");
     Serial.print (isdigit( '8' ) ? "8 is a": "8 is not a");
     Serial.print (" digitr" );
     Serial.print (isdigit( '8' ) ?"# is a": "# is not a") ;
     Serial.print (" digitr");
     Serial.print ("rAccording to isalpha:r" );
     Serial.print (isalpha('A' ) ?"A is a": "A is not a");
     Serial.print (" letterr");
     Serial.print (isalpha('A' ) ?"b is a": "b is not a");
     Serial.print (" letterr");
     Serial.print (isalpha('A') ?"& is a": "& is not a");
     Serial.print (" letterr");
     Serial.print (isalpha( 'A' ) ?"4 is a":"4 is not a");
     Serial.print (" letterr");
     Serial.print ("rAccording to isalnum:r");
     Serial.print (isalnum( 'A' ) ?"A is a" : "A is not a" );
    
    Serial.print (" digit or a letterr" );
     Serial.print (isalnum( '8' ) ?"8 is a" : "8 is not a" ) ;
     Serial.print (" digit or a letterr");
     Serial.print (isalnum( '#' ) ?"# is a" : "# is not a" );
     Serial.print (" digit or a letterr");
     Serial.print ("rAccording to isxdigit:r");
     Serial.print (isxdigit( 'F' ) ?"F is a" : "F is not a" );
     Serial.print (" hexadecimal digitr" );
     Serial.print (isxdigit( 'J' ) ?"J is a" : "J is not a" ) ;
     Serial.print (" hexadecimal digitr" );
     Serial.print (isxdigit( '7' ) ?"7 is a" : "7 is not a" ) ;
    
    Serial.print (" hexadecimal digitr" );
     Serial.print (isxdigit( '$' ) ? "$ is a" : "$ is not a" );
     Serial.print (" hexadecimal digitr" );
     Serial.print (isxdigit( 'f' ) ? “f is a" : "f is not a");
     
    }
    
    void loop () {
    
    }

    نتایج :

    According to isdigit:
    ۸ is a digit
    # is not a digit
    According to isalpha:
    A is a letter
    b is a letter
    & is not a letter
    ۴ is not a letter
    According to isalnum:
    A is a digit or a letter
    
    ۸ is a digit or a letter
    # is not a digit or a letter
    According to isxdigit:
    F is a hexadecimal digit
    J is not a hexadecimal digit
    ۷ is a hexadecimal digit
    
    $ is not a hexadecimal digit
    f is a hexadecimal digit

    ما در هر تابع از عملگر شرطی (?:) به منظور تعیین این مسئله که آیا برای هر کاراکتر باید عبارت ” is a ” یا ” is not a ” چاپ شود استفاده می کنیم. به عنوان مثال در خط a تعیین شده است که اگر ‘۸’ یک عدد است، تابع isdigit مقدار یک را برمیگرداند، عبارت “۸ is a ” چاپ می شود. اگر ‘۸’ یک عدد نیست، تابع isdigit مقدار صفر را برمیگرداند، عبارت “۸ is not a ” چاپ می شود.

    مثال ۲ :

    مثال پیش رو نحوه استفاده از توابع islower و isupper را نشان می دهد. تابع islower تعیین می کند که آیا ورودی آن یک حرف کوچک (a-z) است یا خیر. تابع isupper تعیین می کند که آیا ورودی آن یک حرف بزرگ (A-Z) است یا خیر.

    int thisChar = 0xA0;
    
    void setup () {
     Serial.begin (9600);
     Serial.print ("According to islower:r") ;
     Serial.print (islower( 'p' ) ? "p is a" : "p is not a" );
     Serial.print ( " lowercase letterr" );
     Serial.print ( islower( 'P') ? "P is a" : "P is not a") ;
     Serial.print ("lowercase letterr");
     Serial.print (islower( '5' ) ? "5 is a" : "5 is not a" );
     Serial.print ( " lowercase letterr" );
     Serial.print ( islower( '!' )? "! is a" : "! is not a") ;
     Serial.print ("lowercase letterr");
    
    Serial.print ("rAccording to isupper:r") ;
     Serial.print (isupper ( 'D' ) ? "D is a" : "D is not an" );
     Serial.print ( " uppercase letterr" );
     Serial.print ( isupper ( 'd' )? "d is a" : "d is not an") ;
     Serial.print ( " uppercase letterr" );
     Serial.print (isupper ( '8' ) ? "8 is a" : "8 is not an" );
     Serial.print ( " uppercase letterr" );
     Serial.print ( islower( '$' )? "$ is a" : "$ is not an") ;
     Serial.print ("uppercase letterr ");
    }
    
    void setup () {
    
    }

    نتایج :

    According to islower:
    p is a lowercase letter
    P is not a lowercase letter
    ۵ is not a lowercase letter
    ! is not a lowercase letter
    
    According to isupper:
    D is an uppercase letter
    d is not an uppercase letter
    ۸ is not an uppercase letter
    $ is not an uppercase letter

    مثال ۳ :

    مثال پیش رو نحوه استفاده از توابع isspace ، iscntrl ، ispunct ، isprint و isgraph را نشان می دهد :

    • تابع isspace تعیین می کند که آیا ورودی آن یکی از انواع کاراکترهای شامل خط جدید (‘n’)، فاصله (‘ ‘)، (‘f’)، (‘r’)،فاصله tab افقی (‘t’) یا فاصله tab عمودی (‘v’) می باشد یا خیر.
    • تابع iscntrl تعیین می کند که آیا ورودی آن یکی از انواع کاراکترهای کنترلی شامل خط جدید (‘n’)، (‘f’)، (‘r’)، فاصله tab افقی (‘t’) ، فاصله tab عمودی (‘v’)، صدای هشدار (‘a’)، (‘b’) یا backspace می باشد یا خیر.
    • تابع ispunct تعیین می کند که آیا ورودی آن یک حرف قابل چاپ به غیر از فاصله، عدد یا حرف می باشد یا خیر، مانند $, #, (, ), [, ], {, }, ;, : or %.
    • تابع isprint تعیین می کند که آیا ورودی آن یک حرف قابل چاپ شامل فاصله (‘ ‘) می باشد یا خیر.
    • تابع isgraph تعیین می کند که آیا ورودی یک حرف به غیر از فاصله (‘ ‘) می باشد یا خیر.
    void setup () {
     Serial.begin (9600);
     Serial.print ( " According to isspace:rNewline ") ;
     Serial.print (isspace( 'n' )? " is a" : " is not a" );
     Serial.print ( " whitespace characterrHorizontal tab") ;
     Serial.print (isspace( 't' )? " is a" : " is not a" );
     Serial.print ( " whitespace charactern") ;
     Serial.print (isspace('%')? " % is a" : " % is not a" );
     
     Serial.print ( " rAccording to iscntrl:rNewline") ;
     Serial.print ( iscntrl( 'n' )?"is a" : " is not a" ) ;
     Serial.print (" control characterr");
     Serial.print (iscntrl( '$' ) ? " $ is a" : " $ is not a" );
     Serial.print (" control characterr");
     Serial.print ("rAccording to ispunct:r");
     Serial.print (ispunct(';' ) ?"; is a" : "; is not a" ) ;
     Serial.print (" punctuation characterr");
     Serial.print (ispunct('Y' ) ?"Y is a" : "Y is not a" ) ;
     Serial.print ("punctuation characterr");
     Serial.print (ispunct('#' ) ?"# is a" : "# is not a" ) ;
     Serial.print ("punctuation characterr");
    
    Serial.print ( "r According to isprint:r");
     Serial.print (isprint('$' ) ?"$ is a" : "$ is not a" );
     Serial.print (" printing characterrAlert ");
     Serial.print (isprint('a' ) ?" is a" : " is not a" );
     Serial.print (" printing characterrSpace ");
     Serial.print (isprint(' ' ) ?" is a" : " is not a" );
     Serial.print (" printing characterr");
     
     Serial.print ("r According to isgraph:r");
     Serial.print (isgraph ('Q' ) ?"Q is a" : "Q is not a" );
     Serial.print ("printing character other than a spacerSpace ");
     Serial.print (isgraph (' ') ?" is a" : " is not a" );
     Serial.print ("printing character other than a space ");
    }
    
    void loop () {
    
    }

    نتایج :

    According to isspace:
    Newline is a whitespace character
    Horizontal tab is a whitespace character
    % is not a whitespace character
    According to iscntrl:
    Newline is a control character
    $ is not a control character
    According to ispunct:
    ; is a punctuation character
    Y is not a punctuation character
    # is a punctuation character
    According to isprint:
    $ is a printing character
    Alert is not a printing character
    Space is a printing character
    According to isgraph:
    Q is a printing character other than a space
    Space is not a printing character other than a space

    پایان جلسه ، تمام جلسات آردوینو را اینجا مطالعه کنید.

    دیگر جلسات این آموزش

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

     

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

    پیش نیاز های این درس

    توپولوژی رگولاتور فلای‌بک ( Flyback)

    توپولوژی رگولاتور فلای‌بک تنها رگولاتور مد فلای‌بک در بین رگولاتورهای با ایزولاسیون ترانسفورمری  و همچنین ساده ترین نوع آن ها می باشد. عملکرد این رگولاتور خیلی نزدیکتر به عملکرد رگولاتور بوست می باشد. اما مزیت های بیشتری نسبت به همتای بدون ایزوله خود (رگولاتور بوست) دارد.

    همانطور که از شکل ۵-۴ دیده می شود، طراحی رگولاتور فلای‌بک مانند طراحی رگولاتور بوست می باشد با این تفاوت که یک سیم پیچ ثانویه به سلف اضافه شده است. بنابراین اندازه رگولاتور فلای‌بک فقط اندکی از رگولاتور بوست بزرگتر می باشد. مزیت های رگولاتور فلای‌بک نسبت به رگولاتور بوست یا باک-بوست عبارت‌اند از:

    1.  در یک منبع تغذیه می توان خروجی های متعددی را به منبع اضافه کرد.
    2.  خروجی های منبع تغذیه می توانند ولتاژ مثبت یا منفی داشته باشند.
    3.  سطح ولتاژهای خروجی مستقل از ولتاژ ورودی می باشد.
    4. بین ولتاژ ورودی و خروجی یک عایق ایزولاسیون قوی وجود دارد.

    عملکرد رگولاتور فلای‌بک را می توان با جدا کردن یک پریود به دو قسمت، یعنی حالتی که سوئیچ قدرت روشن است و حالتی که سوئیچ قدرت خاموش می باشد، بررسی کرد. در مدت زمان روشن بودن سوئیچ قدرت، تمامی ولتاژ ورودی در دو سر سیم پیچ اولیه ترانس قرار می گیرد. و باعث می شود یک جریان Ramp با شیب   در سیم پیچ اولیه به وجود آید.  این تا زمان خاموش شدن سوئیچ قدرت ادامه می یابد. در این لحظه (بلافاصله بعد از خاموش شدن سوئیچ قدرت) ولتاژ اندازه‌گیری شده در دو سر سوئیچ قدرت (در این جا یک MOSFET) ، مجموع ولتاژ ورودی با ولتاژ القا شده روی سیم پیچ اولیه ترانس می باشد. که مقدار این ولتاژ القا شده برابر با حاصلضرب ولتاژ خروجی ( با در نظر گرفتن افت ولتاژ دو سر دیود) در نسبت دور ترانس می باشد. به عنوان مثال، اگر نسبت دور ترانس ۱:۱ و ولتاژ خروجی ۵ ولت باشد، با در نظر گرفتن افت ولتاژ  دو سر دیود برابر ۱ ولت، ولتاژ القا شده روی سیم پیچ اولیه ۶ ولت خواهد بود. بنابراین افت ولتاژ دو سر سوئیچ قدرت ۶ ولت بالاتر از ولتاژ ورودی خواهد بود.

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

    توپولوژی رگولاتور فلای‌بک ( Flyback) توپولوژی رگولاتور فلای‌بک ( Flyback) توپولوژی رگولاتور فلای‌بک ( Flyback)

    رگولاتور فلای‌بک می تواند در مد پیوسته ( continuou) یا ناپیوسته ( discontinuous ) کار کند. درمد ناپیوسته انرژی ذخیره شده در هسته در مدت زمان روشن بودن سوئیچ قدرت، به طور کامل در مدت زمان خاموش بودن سوئیچ قدرت تخلیه می شود. این حالت را می توان به راحتی با دیدن ولتاژ دو سر سوئیچ قدرت تشخیص داد. به این صورت که با تخلیه کامل انرژی هسته، ولتاژ القا شده روی سیم پیچ اولیه صفر خواهد بود در نتیجه ولتاژ دو سر سوئیچ قدرت ( که مجموع ولتاژ ورودی و ولتاژ القا شده روی سیم پیچ اولیه می باشد) همان ولتاژ ورودی خواهد بود. در این مدت زمان ممکن است دیود و سوئیچ قدرت هر دو همزمان خاموش باشند در نتیجه ترانسفورمر به طور کامل در حالت بدون بار قرار می گیرد. در مد پیوسته سوئیچ قدرت قبل از این که تمامی انرژی هسته تخلیه شود، روشن می شود(شکل ۶-۴). یک رگولاتور فلای‌بک می تواند در هر یک از این دو مد، با توجه به بار خروجی و سطح ولتاژ ورودی کار کند. اگر سطح ولتاژ ورودی پایین باشد، به علت افزایش عرض پالس های سوئیچ قدرت، زمان کافی برای تخلیه کل انرژی ذخیره شده در هسته وجود نخواهد داشت. در نتیجه رگولاتور فلای‌بک وارد مد پیوسته خواهد شد. و در این حالت رگولاتور دیگر قادر به رگوله کردن ولتاژ خروجی نخواهد بود. اگر طراح ترانسفورمر را برای سنگین ترین بار ممکن و برای حداقل ولتاژ ورودی طراحی کند، بنابراین در هر محدوده رج عملیاتی، رگولاتور فلای‌بک بین سیکل ها خاموش خواهد شد (مد ناپیوسته) و منتظر خواهد ماند تا تقاضای انرژی بیشتری از سوی بار خروجی صورت گیرد. این قابلیت به رگولاتور فلای‌بک این امکان را می دهد که وسیع ترین رنج دینامیکی( یعنی عمل رگوله کردن ولتاژ خروجی را در رنج وسیعی از ولتاژ ورودی و جریان بار خروجی انجام دهد) را در بین توپولوژی های دیگر داشته باشد.

    عملکرد رگولاتورهای فلای‌بک اندکی پیچیده تر از رگولاتورهای Forward می باشد. اما  تشریح روابط ریاضی آن کاملا آسان می باشد. برخلاف ترانسفورمرهای مد Forward، سیم پیچ های اولیه و ثانویه ترانسفورمر فلای‌بک با اختلاف فاز ۱۸۰ درجه‌ای نسبت به هم پیچیده می شوند. بنابراین جریان به طور هم زمان در سیم پیچ اولیه و ثانویه جاری نمی گردد. در نتیجه هر کدام از سیم پیچ های اولیه و ثانویه را می توان جداگانه به صورت یک سلف فرض کرد. بنابراین جریان ورودی از رابطه زیر بدست می‌آید.

    توپولوژی رگولاتور فلای‌بک ( Flyback) توپولوژی رگولاتور فلای‌بک ( Flyback)

    توپولوژی رگولاتور فلای‌بک ( Flyback)

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

    توپولوژی رگولاتور فلای‌بک ( Flyback)

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

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

    توپولوژی رگولاتور فلای‌بک ( Flyback)

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

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

    توپولوژی رگولاتور پوش-پول (Push-Pull)

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

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

    یادگیری عملکرد رگولاتور پوش-پول چندان سخت نمی باشد (شکل۷-۴). تنها یک ترانزیستور در هر لحظه می تواند روشن باشد. موقعی که یکی از ترانزیستورها روشن می شود، جریان از سیم پیچ اولیه مربوط به آن ترانزیستور شروع به شارش می کند. و به طور همزمان یکی از سیم پیچ های ثانویه همراه با سر وسط شروع به هدایت می کند. این جریان وارد فیلتر L-C می شود. و انرژی به وسیله سلف و خازن ذخیره می شود. مقدار ولتاژ ظاهر شده در سمت ورودی فیلتر L-C (ثانویه ترانسفورمر) برابر با حاصلضرب نسبت دور ترانسفورمر در مقدار پیک ولتاژ ورودی می باشد. این روند تا خاموش شدن سوئیچ قدرت توسط کنترلر ادامه می یابد. سپس باید یک زمان مرده (deadtime) بین خاموش شدن سوئیچ قدرت اولی و روشن شدن سوئیچ دومی در نظر گرفته شود. در این مدت زمان هیچ ترانزیستوری روشن نمی شود و هر دو ترانزیستور خاموش هستند. دلیل این کار این است که سوئیچ قدرت برای خاموش شدن کامل نیاز به زمان اندکی دارد.  این زمان برای ترانزیستورهای دوقطبی  حدود ۲ میکروثانیه می باشد و بیشتر وابسته به مدار درایور آن ها دارد. و برای MOSFETها این زمان خیلی کوتاه تر بوده و در حدود ۵۰ تا ۴۰۰ نانوثانیه می باشد. این خیلی مهم است که دو ترانزیستور به طور همزمان روشن نشوند زیرا در غیر این صورت اتصال کوتاه رخ داده و باعث می شود که جریان نجومی از سوئیچ های قدرت عبور کند که این جریان فورا سوئیچ های قدرت را می سوزاند. افت ولتاژ دو سر سوئیچ قدرت خاموش، دو برابر ولتاژ ورودی می باشد. این به خاطر وجود جریان مخالف در سیم پیچ فعال می باشد. در حالت کلی با روشن شدن هر سوئیچ قدرت یکی از سیم پیچ های ثانویه شروع به هدایت کرده و در هر نیم سیکل توانی به بار خروجی تحویل داده می شود. در نتیجه در یک سیکل دو برابر توان نسبت به رگولاتورهای تک سوئیچ تحویل بار خروجی می شود.

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

    توپولوژی رگولاتور پوش-پول (Push-Pull) توپولوژی رگولاتور پوش-پول (Push-Pull)

    جریان فیلتر خروجی شبیه رگولاتور باک از رابطه زیر بدست می آید.

    توپولوژی رگولاتور پوش-پول (Push-Pull)

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

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

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

    توپولوژی رگولاتور نیم پل (Half-Bridge)

    رگولاتور نیم پل یکی دیگر از انواع رگولاتورهای مد Forward با ایزولاسیون ترانسفورمری می باشد. همانطور که از شکل ۸-۴ دیده می شود آرایش قطعات در اطراف سیم پیچ اولیه با نحوه چیدمان قطعات در رگولاتور پوش-پول خیلی فرق می کند. رگولاتور نیم-پل فقط یک سیم پیچ اولیه دارد که به صورت Pull-up و Pull-down به سوئیچ های قدرت متصل شده است ( شبیه درایور totem-pole) و طرف دیگر سیم پیچ اولیه از یک تقسیم ولتاژ خازنی بین ورودی و زمین تغذیه می شود. در نتیجه در هسته ترانسفورمر شار دو طرفه به وجود می آید. تقسیم ولتاژ خازنی تقریبا نصف ولتاژ ورودی را در یک طرف سیم پیچ اولیه مهیا می کند و طرف دیگر سیم پیچ اولیه توسط سوئیچ های قدرت، ولتاژ زمین و ورودی را به خود می گیرد. در نتیجه فقط نصف ولتاژ ورودی روی سیم پیچ اولیه ظاهر می شود. به خاطر همین جریان متوسط و پیک آن دو برابر رگولاتور پوش-پول در یک توان مشخص می باشد. در نتیجه رگولاتور نیم-پل برخلاف پوش-پول انتخاب خوبی برای توان های بالا نمی باشد. اما در عوض یک ویژگی مثبت خیلی مهم نسبت به پوش-پول دارد و آن اینکه هسته ترانسفورمر رگولاتور نیم-پل رفتار کاملا بالانس شده از  خود نشان می دهد. عمل بالانس هسته توسط خازن های تقسیم ولتاژ انجام می گیرد. ولتاژ نقطه وسط بین دو خازن ( همان نقطه‌ای که یک سر سیم پیچ اولیه به آن متصل شده است) توسط شار عبوری از ترانسفورمر تنظیم می شود به این صورت که در جهتی که شار بیشتری از هسته عبور می کند ولتاژ نقطه سر وسط بالا رفته در نیجه افت ولتاژ سیم پیچ اولیه کمتر می شود. و به این ترتیب مشخصه B-H ترانسفورمر بدون نیاز به قطعات گران سرعت بالا و مدارهای حسگر جریان، بالانس می شود.

    توپولوژی رگولاتور نیم پل (Half-Bridge) توپولوژی رگولاتور نیم پل (Half-Bridge)

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

    همانطور که در بالا هم اشاره شد به خاطر ظاهر شدن نصف ولتاژ ورودی روی سیم پیچ اولیه ترانس، جریان پیک رگولاتور نیم-پل دو برابر توپولوژی پوش-پول می باشد. این به این معنی است که سوئیچ های قدرت به حداکثر فشار خود در نصف توان رگولاتور پوش-پول می رسند. توپولوژی نیم-پل در توان های بین ۱۵۰ وات و ۵۰۰ وات مورد استفاده قرار می گیرد.

    توپولوژی رگولاتور تمام-پل (Full-bridge)

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

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

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

    توپولوژی رگولاتور تمام-پل (Full-bridge) توپولوژی رگولاتور تمام-پل (Full-bridge)

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

    دیگر جلسات این آموزش



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

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

    برای مثال، سامسونگ، ابتدا آپدیت اندروید O را برای تعداد محدودی از گوشی‌های گلکسی اس ۸ عرضه کرد و زمانی که مشکل ری‌استارت شدن این دستگاه را متوجه شد، آن رفع نموده و آپدیت را به طور گسترده و همگانی منتشر کرد.

    در حالی که کاربران اپراتورهای AT&T و Horizon از آپدیت گوشی‌های خود گزارش داده‌اند، ولی اپراتور T-Mobile گزارش داده که در چند روز آینده اندروید O برای نوت ۸ عرضه خواهد شد.

    یکی از مدیران انجمن سایت سامسونگ نیز گزارش داده که تمام گوشی‌های گلکسی نوت ۸ تا ۲ یا ۳ هفته آینده به اندروید O آپدیت خواهند شد بنابراین اگر شما نوت ۸ دارید، مطمئن باشید به زودی اندروید O را روی گوشی خود خواهید داشت.

    مرور کلی بر آموزش استفاده از SSH در رزبری پای

    در این قسمت از آموزش یاد می گیرید که چگونه RaspberryPi خود را از راه دور بر بستر شبکه محلی و از طریق پوسته امن یا SSH Secure Shell  کنترل کنید.در ادامه با میکرو دیزاینر الکترونیک باشید تا SSH را در رزبری پای فعال و استفاده کنیم.

    آموزش استفاده از SSH در رزبری پای

    یک دلیل متداول برای کنترل از راه دور RaspberryPi از یک کامپیوتر دیگر (مانند کامپیوتر رومیزی یا لپتاپتان ) این است که ممکن است شما از RaspberryPi تنها برای کنترل ادوات الکترونیکی استفاده می کنید و بنابراین نیازی به کیبورد , موس یا مانیتور به غیر از زمان تنظیم  نداشته باشید .

    همچنین این کار می تواند از شلوغی میز کار جلوگیری کند و مشکل جاگیر بودن چندین موس و کیبورد را از بین ببرد .

    فعال کردن SSH

    پوسته امن یا SSH  Secure Shell  یکی از ویژگی های لینوکس است که به شما اجازه می دهد از خط فرمان کامپیوتر میزبان خود یک terminal session روی RaspberryPi تان باز کنید .

    در نسخه های اخیر Raspbian SSH به طور پیشفرض فعال نیست . برای فعال کردن آن می توانید از یک فایل بوت خالی یا raspi-config استفاده کنید که در قسمت های قبلی به آموزش آن پرداختیم .

    استفاده از یک فایل بوت خالی

    این کار کمی پیچیده است اما می توانیم با یک راه میانبر در Raspbian به سادگی آن را دور بزنیم . برای این کار یک فایل به نام ssh ایجاد می کنیم . این فایل به طور پیشفرض وجود ندارد و باید ساخته شود که می تواند خالی باشد . سیستم در هنگام بوت به دنبال این فایل می گردد و اگر این فایل موجود باشد ssh را فعال می کند و بعد از آن این فایل حذف می شود . بنابراین تنها کافی است یک فایل به نام ssh  ایجاد و آن را در پوشه boot ذخیره کنید . اگر SD CARD را به کامپیوتر خود متصل می کنید این فایل را مستقیما در دایرکتوری اصلی  SD CARD قرار دهید .

    آموزش استفاده از SSH در رزبری پای

    استفاده از raspi-config

    برای این کار LXTerminal را روی RaspberryPi خود باز کنید و دستور زیر را در آن وارد کنید تا raspi-config اجرا شود .

    sudo raspi-config

    استفاده از raspi-config

    به گزینه ssh رجوع کنید . ممکن است در بخش Interfaces یا Advanced باشد . (آن را جابجا می کنند )

    استفاده از raspi-config

    دکمه Enter را بزنید و سپس Enable را انتخاب کنید .

    استفاده از raspi-config

    یک اسکریپت اجرا خواهد شد و پس از اتمام شما پنجره زیر را مشاهده خواهید کرد .

    استفاده از raspi-config

    برای ثبت این تغییر باید RaspberryPi خود را ریبوت کنید .

    استفاده از SSH روی Mac یا Linux

    اکنون به سراغ استفاده از کامپیوتری که قصد کنترل RaspberryPi از طریق آن را دارید بروید .  اگر از یک Mac یا Linux استفاده می کنید یک Terminal باز کنید . روی Mac می توانید آن را در پوشه Utilities داخل پوشه ی Applications پیدا کنید .

    دستور زیر را در پنجره ترمینال وارد کنید . l بعد از خط تیره حرف L کوچک است .

    ssh 192.168.1.13 -l pi

    همچنین می توانید از ssh pi@192.1691.13 نیز استفاده کنید .

    به خاطر داشته باشید که باید آدرس IP بالا را با آدرس RaspberryPi خود جایگزین کنید . می توانید این آدرس را با اجرای دستور “sudo ifconfig”  از ترمینال پیدا کنید .

    استفاده از SSH روی Mac یا Linux استفاده از SSH روی Mac یا Linux

    گزینه “-l pi” نشان می دهد که ما میخواهیم با نام کاربری “pi” وارد RaspberryPi شویم . اولین بار که این دستور را اجرا میکنید یک پیام امنیتی مبنی بر عدم توانایی تشخیص هویت ماشین دریافت خواهید کرد , ادامه دهید و پسورد خود  به طور پیش فرض “raspberry” را وارد کنید .

    مشاهده خواهید کرد که پنجره command prompt به گونه ای تغییر خواهد کرد تا نشان دهد که اکنون به RaspberryPi متصل شده اید . دستور “ls” را اجرا کنید تا محتوای پوشه کنونی روی RaspberryPi را مشاهده کنید .

    SSH روی ویندوز

    اگر از ویندوز استفاده می کنید آنگاه باید یک برنامه رایگان به نام “PuTTY” را از اینجا دانلود کنید : http://www.putty.org

    بعد از دانلود و نصب PuTTY (یک تک فایل به نام putty.exe ) , برنامه را اجرا کنید.

    همچنین اگر این برنامه را هم دوست نداشتین از اینجا برنامه tera term را دانلود کنید.

    SSH روی ویندوز

    آدرس IP که قبل تر پیدا کردید را وارد کنید و “Open” را بزنید . این کار یک اخطار را به شما نشان خواهد داد (برای بار اول) و سپس از شما نام کاربری (“pi”) و پسورد (“raspberry”) را درخواست خواهد کرد.

    SSH روی ویندوز

    اکنون پنجره ssh  برای استفاده آماده خواهد بود .

    SSH روی ویندوز

    تست و راه اندازی

    با استفاده از دستور “ls” میان فایل های سیستم خود بگردید و با دستور “cd” قبل از یک نام , نام دایرکتوری کنونی را تغییر دهید .

    می توانید با دستور “nano” قبل از نام فایل آن را ویرایش کنید و با دستور “apt-get” به نصب نرم افزار بپردازید .

    بعد از اتمام کار با ssh پنجره را با تایپ کردن exit ببندید .

    عیب یابی

    اگر هنگام اتصال به RaspberryPi با خطای connection reset by peer  مواجه شدید , ممکن است کلید های ssh مشکل داشته باشند . برای ریست کردن این کلیدها دستورات زیر را اجرا کنید :

    ابتدا کلیدهای قدیمی را حذف کنید :

    sudo rm /etc/ssh/ssh_host_*

    سپس آن ها را بازتولید کنید :

    sudo dpkg-reconfigure openssh-server

    آنگاه دوباره سعی کنید .

    دیگر جلسات این آموزش



    توییتر ویژگی جدیدی به نام Timestamps معرفی کرده که به همگان امکان می‌دهد تا ویدیو زنده‌ای را از هر جا و مکانی آغاز کنند.

    توییتر گفته که قصد دارد این ویژگی را پس مشاهده ویدیوهای لایو کاربران رسماً فعال کند.

    برای استفاده از Timestamps، باید گزینه اشتراک‌گذاری ویدیو زنده را انتخاب کنید. سپس ویدیو لایو ظاهر خواهد شد. همچنین می‌توانید زمانی که می‌خواهید کاربران و فالوورهای شما این ویدیو را ببینند، انتخاب کنید. در قسمت بعد می‌توانید هر جمله‌ای را اضافه نمایید.

    ویدیو از زمانی که انتخاب کرده‌اید آغاز خواهد شد. ضمن اینکه اگر ویدیو زنده همچنان ادامه‌دار است، کاربران می‌توانند گزینه لایو را انتخاب نمایند و به قسمت مورد نظر خود برسند.

    این ویژگی از امروز قابل استفاده است و کاربران اندرویدی و iOS، همچنین سایت توییتر و Periscope توییتر نیز می‌توانند از آن استفاده نمایند.

© تمامی حقوق مطالب برای وبسایت آلفا باکس محفوظ است و هرگونه کپی برداری بدون ذکر منبع ممنوع و شرعا حرام می باشد.
قدرت گرفته از : بک لینکس