PIC בהפתעה #1: מבוא וסוללה

באורח לא צפוי (וחוקי לגמרי, לא לדאוג) הגיעה לרשותי כמות נאה של מעגלים מודפסים שנשרו במהלך הייצור. כתבתי בכוונה "נשרו" ולא "נפסלו", כי הרכיבים שכבר הולחמו אליהם הם בסדר גמור – העבודה עליהם לא הושלמה מסיבות אחרות. מדובר בתכנון פשוט יחסית, ובלב כל מעגל נמצא מיקרו-בקר קטן וחביב מדגם PIC16F616. בקיצור, מדובר באוצר של ממש לצורך למידה וניסויים שונים ומשונים. בואו נתחיל!

מעגלים מודפסים לא מושלמים
מעגלים מודפסים לא מושלמים למוצר, מושלמים למשחקים…

מה שהכי מעניין אותי במעגלים האלה הוא, כמובן, המיקרו-בקר, ואני יכול לנסות להלחים אותו החוצה ולשתול אותו במעגלים משלי. אך לפני שאני נוקט באמצעים דרסטיים (ודורשי-השקעה) שכאלה, אולי אפשר להיעזר במה שכבר קיים?

המעגל המודפס הקיים - יחידה נפרדת
המעגל המודפס הקיים – יחידה נפרדת. מחקתי בטיפקס את שם החברה

פלטפורמה לניסויים

המוצר שלו נועדו המעגלים האלה הוא מנגנון בקרה כלשהו שמתחבר לרשת החשמל הביתית, מקבל קלט משני מקורות של מתח אנלוגי, מדליק שתי נוריות LED לאינדיקציה ומפעיל ממסר אחד. הרכיבים שעל הלוחות תפורים לשרת את הפונקציות הספציפיות האלה ורק אותן, מה שמשאיר לי מרחב תמרון מצומצם מאד. מצד שני, הלוח כבר כולל אספקת חשמל ונוריות LED מובנות, יש גישה מסודרת לצריבה באמצעות PICKIT דגם 2 או 3, ועם קצת מזל וטריקים, אולי אפשר יהיה לחלץ ממנו עוד כמה יכולות. במחיר של כלום ליחידה, מה כבר יש להפסיד?

ניסוי ראשון: חיבור סוללה

במוצר הסופי (ובחלק מהלוחות שנשרו בשלב מתקדם) יש שרשרת של רכיבים בין רשת החשמל לבין פיני המתח של המיקרו-בקר. אחרי נתיך להגנה, שנאי שמנמן ממיר את המתח הביתי של 220VAC למתח ידידותי יותר, 9VAC. מתח זה מועבר דרך רכיב גשר דיודות כדי להפוך אותו מזרם חילופין, AC, לזרם ישיר – DC. הדיודות מטבען מפילות חלק מהמתח הזה. מה שנשאר עובר ייצוב באמצעות קבל גדול, ונכנס למייצב מתח מדגם 78L05 המוכר שמוציא 5V עבור הלוגיקה.

המקום (ריק מימין למעלה) לשנאי, גשר הדיודות (שחור) וקבל.
המקום (ריק מימין למעלה) לשנאי, גשר הדיודות (שחור) וקבל.

ברוב הלוחות, הנתיך והשנאי חסרים, וממילא אין לי כוונה לעבוד יותר מדי עם החשמל הביתי. אז למה לא להתאים את הלוח לעבודה עם, נניח, סוללת 9V?

המקום הנוח ביותר, פיזית, להלחמת חוטים ומחבר עבור הסוללה הוא החורים שמיועדים ליציאות של השנאי. לגשר הדיודות לא תהיה בעיה עם DC בכניסה, ומשם הכל ימשיך כרגיל. אך כדי לחסוך את מפל המתח על הדיודות, החלטתי לסלק את הרכיב הזה לגמרי ולקצר את הפדים שיועדו לרגליים שלו: פלוס הסוללה לפלוס הפלט ומינוס למינוס. הסתבר שההלחמה עיקשת מאד, עד כדי כך שנאלצתי להשתמש במלחם חזק (60W) ובקצת כוח פיזי כדי לנתק את הרגליים. לאחר מכן העסק נעשה פשוט יותר. השתמשתי ברגליים קצוצות של נוריות LED כגשרים – אני שומר "זנבות" של רכיבי Through-hole בצד אחרי ההלחמה, למטרות כאלה בדיוק – והלחמתי גם שורת פינים עבור ממשק הצריבה.

מעקף חובבני במקום גשר הדיודות
מעקף חובבני במקום גשר הדיודות

בלינק

אחרי עיון חוזר בהוראות לפרויקט Blink ל-PIC12F675, קריאה קצרה במפרט של PIC16F616 לצורך התאמות, ועיון במעגל המודפס עצמו לזיהוי הפינים הרלוונטיים (RA0 ו-RA1), העליתי למיקרו-בקר את הקוד הבא, שמהבהב בשתי נוריות ה-LED המובנות בקצבים שונים:

#include <xc.h>

// PIC16F616 Configuration Bit Settings
#pragma config FOSC = INTOSCIO  
#pragma config WDTE = OFF       
#pragma config PWRTE = OFF      
#pragma config MCLRE = ON       
#pragma config CP = OFF         
#pragma config IOSCFS = 8MHZ    
#pragma config BOREN = ON       

void main() {

    ANSEL = 0; // No analog stuff
    TRISA = 0; // All RAx pins output
    PORTA = 0;

    unsigned int d;
    unsigned char state = PORTA;

    while (1) {

        for (d = 0; d < 50000; d++);
        state++;
        if (state > 3) state = 0;
        PORTA = state;

    }

}

וזה עובד, כפי שאפשר לראות בתמונה:

המעגל מריץ תוכנת Blink בשתי נוריות ה-LED
המעגל מריץ תוכנת Blink בשתי נוריות ה-LED

הניסוי הראשון הצליח, ובפוסטים הבאים בסדרה זו אבצע – בשאיפה – ניסויים מתקדמים יותר ופרויקטים של ממש. לסיום, הנה נקודות עיקריות מהמפרט של ה-PIC הזה, למתעניינים:

  • זיכרון Flash (לתוכנית): 3.5 קילובייט
  • זיכרון RAM (למשתנים וכדומה): 128 בייטים
  • מהירות שעון: עד 20MHz חיצוני, 4/8MHz פנימי
  • פינים לקלט/פלט: 11, ועוד אחד לקלט בלבד
  • טיימרים: שניים של 8 ביט ואחד של 16 ביט
  • המרת A/D: שמונה ערוצים, רזולוציה 10 ביט
  • ללא EEPROM
להרשמה
הודע לי על
2 תגובות
מהכי חדשה
מהכי ישנה לפי הצבעות
Inline Feedbacks
הראה את כל התגובות

מגניב!
מאיפה השגת את הלוחות?