Sine wave and the 1st quadrant


http://wp.me/ph3BR-1VQ

 

以前學習過, 如何用數字合成的方法 (DDS) 產生 正弦波 (SINE WAVE), 翻翻筆記, 例如這個 https://xiaolaba.wordpress.com/2011/11/10/70khz-lf-receiver-to-understand-sine-wave-of-dds-and-used-lookup-table/

快速重溫, 希望知新.

neo_img_sin_lookup_table_minidds_how_to
neo_img_sin_lookup_table_minidds_how_to

 

最近做了一次三角波 (Triangle wave) 的產生方法, 例如這個, 編碼的寫法其實相對簡單,

 


當前數值 = 0;
起點;
開始發送 [當前數值];
當前數值 + 1, 結果存回 [當前數值];
暫停一下;
如果 [當前數值] 小於 100, 跳到上面的 開始發送 [當前數值];
否則 重設, 使 [當前數值] = 0, 然後跳到上面的, 起點的位置; 重複執行;

實際的C語言編碼類似這樣,


unsigned int 當前數值 = 0;

void 三角波起點() {
    當前數值++;
    if (當前數值 > 100) {
        當前數值 = 0;};
}

 

 

三角波產生以後, 圖像化的結果是這樣,
thingspeak-plot

 

 

看完三角波, 再比對上面的那個 SINE WAVE 表格, 生成完整0-360度的. 聽說, 引用類似三角波重複步驟的產生辦法, 如果要產生正弦波 (SINE WAVE) 的話, 只需要建立四分之一的表格, 就是 0-90度的表格, 然後依靠一定的規則, 就可以在慢速的情況底下產生完整的 SINE WAVE. 而 0-90度, 在一個圓表示四分之一的面積, 老外稱為 the 1st quadrant, 第一象限, 用下圖的黃色區塊表示. 而第二象限, 第三象限, 第四象限分別以綠色,藍色和白色表示, 依次類推, 方便圖像化記憶. 習慣性地, 一般數數目都是順時針或從左到右, 但是這些古老的幾何術卻是逆時針的, 習慣一下就好了.

neo_unit-circle-trigonometry-21-728

 

 

回憶一下, SINE WAVE DDS, 用8BIT的話, 數值範圍 0-255, 如果以0為基礎, 對應的表格會出現正數和負數 (範圍-127 至 +128 ), 下圖中藍色的線段, 因此, 把每個數都單獨加上 127, 產生了另外一組數列, 化成圖表, 整個線條就會上移, 剛好落在 0-255 的範圍, 就是紅色那線條, 避開了處理正負號的疑慮.

neo_dds-sine-wave-offset

 

在上面的基礎底下, 如果把180度到360度的數列, 每個值都給它乘以 -1, 那麼會出現另外一組數列, 而且全部都是正數的, 下圖的右邊那段山峰, 而且, 把180度到360度看成一堆數, 0度到180度看作另外一堆數, 那麼這兩堆數的順序和排列是一模一樣的. 意思就是說, 這兩堆數字並沒有分別, 除了正負號. 如果看過所羅門王的寶藏和SHEBA雙峰的故事, 應該知道地球上有個有個地方被命名為 SHEBA’S BREASTS (士巴女王的雙乳峰), 這個圖表好類似, 難道真的是傳說中的寶藏此中尋?!

neo_dds-sine-wave-half-cycle-mirror

 

既然這兩堆數字組成的圖表類似雙乳峰, 所以看其中的一半就可以想像到另外一半. 那就單獨看看0度到180度那堆數字的排列有沒有更多的巧妙. 先來看一個有些簡化的鏡像數列, 例如下圖, 以10為中間值, 向上遞減到1, 同時向下也遞減到1, 把這整串數字化成圖表, 會看到類似的一個等邊三角形, 原因是以10為界, 分別的兩個方向, 同樣的間隔是一樣的數值.

neo_mirror-series

 

 

有了鏡像數列的圖畫概念, 再對比SINE WAVE TABLE 的數列, 很容易發現, 以90度為界, 同樣存在鏡像數列. 因此, 只要存起來 0-90度的那堆數, 依照一定的讀取順序提取, 例如, 從小到大, 從大到小, 從小到大再添個負號, 然後從大到小再添個負號在前面, 就可以完整畫出一個 SINE WAVE 圖表.

neo_sine-quadrant-mirror

 

參照 the 1st quadrant, 第一象限的那圖畫, 0-90度也就是需要存起來的數列, 單獨化成圖表, 看起來就這樣,

neo_sine-quadrant

 

有時間再寫成程序, 看看thingspeak 畫成的圖畫.

完畢.

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s